sql server數據庫行轉列及巧用case when、和row_number用法例子


select 身份證號碼,
MAX(t.單位編號) 單位編號,
MAX(t.姓名) 姓名,
MAX(case when t.rows=1 then convert(varchar(max),疾病名稱) end) 疾病1,
MAX(case when t.rows=2 then convert(varchar(max),疾病名稱) end) 疾病2,
MAX(t.單位名稱) 單位名稱,
MAX(t.醫院編碼) 醫院編碼,
MAX(t.醫院名稱) 醫院名稱,
MAX(t.人員類別) 人員類別,
max(t.性別) 性別
from(select
ROW_NUMBER() over(partition by 身份證號碼 order by 姓名) as rows,
case
when len(身份證號碼) = 15 and cast(substring(身份證號碼,15,1) as int) % 2 = 0 then '女'
when len(身份證號碼) = 15 and cast(substring(身份證號碼,15,1) as int) % 2 = 1 then '男'
when len(身份證號碼) = 18 and cast(substring(身份證號碼,17,1) as int) % 2 = 0 then '女'
when len(身份證號碼) = 18 and cast(substring(身份證號碼,17,1) as int) % 2 = 1 then '男'
else null end as 性別,*

from
dbo.tablename
)t
group by 身份證號碼

 

 

row_number將group by分組中的人員編號 然后使用case when 進行區分兩種疾病的人。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM