《1》 ?select case 3 when 1 then 1 when 2 then 2 when 3 then 3 when 3 then 4 end from test;
《2》 ?select case 3 when 1 then 1 when 2 then 2 when 3 then 4 when 3 then 3 end from test;
?
我想問的是 為什么第一條sql語句的結果是3 ?第二條結果是4呢 百思不得其解
(我想通了 一旦when中匹配case的條件 就會跳出case循環 這個我懂了 下面還一個問題)
?
?
select a.VR_tagID,hr_maindeptid,Hr_staffName ,(case when datepart(mm,writeTime)=1 then count(a.VR_tagID) else 0 end) Jan,(case when datepart(mm,writeTime)=2 then count(a.VR_tagID) else 0 end) Feb,(case when datepart(mm,writeTime)=3 then count(a.VR_tagID) else 0 end) Mar,(case when datepart(mm,writeTime)=4 then count(a.VR_tagID) else 0 end) Apr,(case when datepart(mm,writeTime)=5 then count(a.VR_tagID) else 0 end) May,(case when datepart(mm,writeTime)=6 then count(a.VR_tagID) else 0 end) June,(case when datepart(mm,writeTime)=7 then count(a.VR_tagID) else 0 end) July,(case when datepart(mm,writeTime)=8 then count(a.VR_tagID) else 0 end) Aug,(case when datepart(mm,writeTime)=9 then count(a.VR_tagID) else 0 end) Sept,(case when datepart(mm,writeTime)=10 then count(a.VR_tagID) else 0 end) Oct,(case when datepart(mm,writeTime)=11 then count(a.VR_tagID) else 0 end) Nov,(case when datepart(mm,writeTime)=12 then count(a.VR_tagID) else 0 end) Dec ,count(a.VR_tagID) Toal
from dbo.VR_WorkCheckDetail ainner join hr_staff b on a.VR_TagID=b.VR_TagID
group by datepart(mm,writeTime), a.VR_tagID,hr_maindeptid,Hr_staffName
?
?
這個語句 大意就是查詢 vr_tagid 在?VR_WorkCheckDetail ?一月出現的次數 二月出現的次數 ?三月... ?以此類推 ?但是我發現,比如只要一月有了一次以上的次數 那么后面所有月份的次數都是0 ?這是為什么呢 求大神指教?。?!
一個關于sql中 case when then 的語法問題
郎朗坤
2018-12-07 07:13:04