SQL 2008依據條件拆分列

2022-09-01 10:18:12 字數 1712 閱讀 6987

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

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

客戶要求依據省份分類。河北省一列、北京市一列、天津市一列。剩下的為其它。目標效果例如以下:

手工編寫的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 pro...

SQL2008數學函式

函式名稱 引數 示例 說明 abs 數值表示式 select abs 23.4 返回 23.4 返回指定數值表示式的絕對值 正值 pi無引數 select pi 返回 3.14159265358979 返回 的值 cos 浮點表示式 select cos pi 3 返回 0.5 返回指定弧度的余弦值...

SQL2008系統函式

newid無引數 select newid 返回 2e6861ef f4db 4ffe 85ea 638242f2e5f2 select newid 返回 09bbde6f 47c2 4e2e 81e8 afc50592280c 返回乙個guid 全域性唯一表示符 值 isnumeric 任意表示式...