SQL Server將查詢出數據進行列轉行操作


在日常的SQL Server數據查詢時經常會遇到需要將數據列轉換成行的操作,現將自己學習的列轉行SQL語句舉例如下:

--首先查詢語句

SELCT * FROM  YXBAK..TBYJKSTEMP

 

 

 

--列轉行的兩種方法

--列轉行第一種方法,使用CASE ... WHEN ... THEN ... ELSE ... END
SELECT 開單科室,
SUM(CASE 執行科室 WHEN '檢驗科' THEN 數量 ELSE 0 END) AS '檢驗科',
SUM(CASE 執行科室 WHEN '超聲科' THEN 數量 ELSE 0 END) AS '超聲科',
SUM(CASE 執行科室 WHEN '放射科' THEN 數量 ELSE 0 END) AS '放射科',
SUM(CASE 執行科室 WHEN 'CT室' THEN 數量 ELSE 0 END) AS 'CT室',
SUM(CASE 執行科室 WHEN 'MRI室' THEN 數量 ELSE 0 END) AS 'MRI室',
SUM(CASE 執行科室 WHEN '內鏡診療中心' THEN 數量 ELSE 0 END) AS '內鏡診療中心',
SUM(CASE 執行科室 WHEN '病理科' THEN 數量 ELSE 0 END) AS '病理科',
SUM(CASE 執行科室 WHEN '心肺功能科' THEN 數量 ELSE 0 END) AS '心肺功能科',
SUM(CASE 執行科室 WHEN '神經電生理檢查室' THEN 數量 ELSE 0 END) AS '神經電生理檢查室',
SUM(CASE 執行科室 WHEN '健康管理中心超聲科' THEN 數量 ELSE 0 END) AS '健康管理中心超聲科',
SUM(CASE 執行科室 WHEN '健康管理中心影像科' THEN 數量 ELSE 0 END) AS '健康管理中心影像科'
FROM YXBAK..TBYJKSTEMP GROUP BY 開單科室 ORDER BY 開單科室

 

 

--列轉行第二種方法使用pivot
--pivot透視
select * from
(select 開單科室,執行科室,數量 from YXBAK..TBYJKSTEMP) as a
pivot (sum(數量)
for 執行科室
IN ([檢驗科],[超聲科],[放射科],[CT室],[MRI室],[內鏡診療中心],[病理科],[心肺功能科],[神經電生理檢查室],[健康管理中心超聲科],[健康管理中心影像科]
)) as b ORDER BY 開單科室 asc

 


免責聲明!

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



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