在為人事局做報表過程中,遇到乙個棘手的問題,客戶要求把資料庫中的一列資料根據條件分成多列。
比如:資料庫中有省份這麼一列資料
客戶要求根據省份分類,河北省一列、北京市一列、天津市一列,剩下的為其他,目標效果如下:
手工編寫的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...