sql的行轉列(case when) sqlserver.net

行轉列之前SQL

SELECT zhenshi, status, COUNT(1) AS n
FROM [MyPlan]
WHERE 1 = 1
	AND leibie = 1
	AND [SickID] = 0
	AND zhenshi <> '協同診療'
	AND t >= '2020-06-06 00:00:00'
	AND t < '2020-06-08 00:00:00'
GROUP BY zhenshi, status

行轉列之前的運行結果 

------------------------------------------------------------------------------------------------------

行轉列之後SQL

select 0
		,zhenshi
		,sum(case --status
			when status!='完成' then n
			else 0
		end) '預約病人數量'
		,sum(case status
			when '已來診' then n
			else 0
		end) '已來診'
		,sum(case --status
			when status!='已來診' and status!='完成' then n
			else 0
		end) '未來診'
		from
		(
			select zhenshi,status,count(1) n
			--CASE status WHEN '開啓' THEN status ELSE '開啓' END,
			--CASE status WHEN '已來診' THEN status ELSE '已來診' END,
			--CASE status WHEN '未來診' THEN status ELSE '未來診' END
			
			FROM [MyPlan] where 1=1 and leibie=1 and [SickID] =0 and zhenshi<>'協同診療' --and status='已來診' 
			--and zhenshi='好孕一組'
			and t>='2020-06-06 00:00:00' and t<'2020-06-08 00:00:00'
			group by zhenshi,status
		)t
		where t.zhenshi!=''
		group by zhenshi

行轉列之後的運行結果

這時候再去程序裏遍歷,就簡單顯示了。

這裏只做行轉列。

列轉行暫未寫-2020.06.07

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章