SQL 2008根據條件拆分列

2021-06-23 05:45:50 字數 1728 閱讀 3805

在為人事局做報表過程中,遇到乙個棘手的問題,客戶要求把資料庫中的一列資料根據條件分成多列。

比如:資料庫中有省份這麼一列資料

客戶要求根據省份分類,河北省一列、北京市一列、天津市一列,剩下的為其他,目標效果如下:

手工編寫的sql語句version1.0版:

select   

河北 = parsename(provice,(charindex('河北',provice))) ,

北京 = parsename(provice,(charindex('北京',provice))) ,

天津 = parsename(provice,(charindex('天津',provice))) ,

其他 =(select provice where charindex('河北',provice) = 0

and charindex('北京',provice) = 0

and charindex('天津',provice) = 0)

from a

執行效果如下:

可使用者的需要只是想查詢這個人是否在這個省份內,並不想知道具體是這個省的哪個城市,所以用replace函式對sql語句進行了公升級,sql語句version2.0版:

select   

河北 =replace(parsename(provice,(charindex('河北',provice))),parsename(provice,(charindex('河北',provice))),'√' ),

北京 =replace(parsename(provice,(charindex('北京',provice))),parsename(provice,(charindex('北京',provice))),'√' ),

天津 =replace(parsename(provice,(charindex('天津',provice))),parsename(provice,(charindex('天津',provice))),'√' ),

其他 =replace((select provice where charindex('河北',provice) = 0

and charindex('北京',provice) = 0

and charindex('天津',provice) = 0),

(select provice where charindex('河北',provice)= 0

and charindex('北京',provice) = 0

and charindex('天津',provice) = 0),

'√')

from a

執行效果如下:

在解決問題過程中,發現網上對此類問題並沒有很好的解決方案,所以在此把自己研究成果拿出來和大家分享下,希望能幫助大家解決開發過程中遇到的問題。

SQL 2008依據條件拆分列

在為人事局做報表過程中,遇到乙個棘手的問題。客戶要求把資料庫中的一列資料依據條件分成多列。比方 資料庫中有省份這麼一列資料 客戶要求依據省份分類。河北省一列 北京市一列 天津市一列。剩下的為其它。目標效果例如以下 手工編寫的sql語句version1.0版 select 河北 parsename p...

SQL2008根據日誌恢復

網上收集的一篇文章,忘記是 的了.做個記號.建立測試資料庫 create database dbgo 對資料庫進行備份 backup database db to disk c db.bak with format go 建立測試表 create table db.dbo.tb test id in...

TP5根據in條件查詢,根據in條件排序資料

一 使用expression類 use think db expression str 5,3,7,6 order new expression field id,str where id in explode str data db name db where where field id,tit...