[转] SQL Server中的行列转换问题
生活随笔
收集整理的這篇文章主要介紹了
[转] SQL Server中的行列转换问题
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
原表結(jié)構(gòu)
最終顯示
SELECT?部門名,COUNT(序號)?as?人數(shù),
?????SUM(CASE?性別?WHEN?1?THEN?1?ELSE?0?END)?as?男,
???????????SUM(CASE?性別?WHEN?2?THEN?1?ELSE?0?END)?as?女,
?????SUM(CASE?SIGN(工資-800)?WHEN?-1?THEN?1?ELSE?0?END)?as?小于800元,
?????SUM((CASE?SIGN(工資-800)*SIGN(工資-1000)?????????????????????/**//*用*來實現(xiàn)<和>功能*/
??????????WHEN?-1?THEN?1?ELSE?0?END)+(CASE?工資
??????????WHEN?800???THEN?1?ELSE?0?END))?as?從800至999,??????????/**//*注意別名不能以數(shù)字開頭*/
?????SUM((CASE?SIGN(工資-1000)*SIGN(工資-1200)
??????????WHEN?-1?THEN?1?ELSE?0?END)+(CASE?工資
??????????WHEN?1000?THEN?1?ELSE?0?END))?as?從1000元至1199元,
?????SUM((CASE?SIGN(工資-1200)?WHEN?1?THEN?1?ELSE?0?END)
?????+(CASE?工資?WHEN?1200?THEN?1?ELSE?0?END))?as?大于1200元
FroM?工資明細表?
GROUP?BY?部門名
| 序號 | 性別 | 部門 | 工資 |
| 1 | 男 | 部門a | 800 |
| 2 | 女 | 部門b | 900 |
| 3 | 男 | 部門a | 400 |
| 4 | 女 | 部門d? | 1400 |
| 5 | 男 | 部門e | 1200 |
| 6 | 男 | 部門f | 500 |
| 7 | 女 | 部門a? | 300 |
| 8 | 男 | 部門d | 1000 |
| 9 | 女 | 部門d | 1230 |
| 10 | 女 | 部門b | 2000 |
| 11 | 男 | 部門c | 2000 |
| 12 | 男 | 部門b | 1200 |
最終顯示
| 部門名? | 人數(shù)????? | 男???????? | 女???? | 小于800元? | 從800至999? | 從1000元至1190元???? | 大于1200元 |
| 部門a????????? | 3 | 2 | 1 | 2 | 1 | 0 | 0 |
| 部門b???????? | 3 | 1 | 2 | 0 | 1 | 0 | 2 |
| 部門c????????? | 1 | 1 | 0 | 0 | 0 | 0 | 1 |
| 部門d???????? | 3 | 1 | 2 | 0 | 0 | 1 | 2 |
| 部門e???????? | 1 | 1 | 0 | 0 | 0 | 0 | 1 |
| 部門f????????? | 1 | 1 | 0 | 1 | 0 | 0 | 0 |
SELECT?部門名,COUNT(序號)?as?人數(shù),
?????SUM(CASE?性別?WHEN?1?THEN?1?ELSE?0?END)?as?男,
???????????SUM(CASE?性別?WHEN?2?THEN?1?ELSE?0?END)?as?女,
?????SUM(CASE?SIGN(工資-800)?WHEN?-1?THEN?1?ELSE?0?END)?as?小于800元,
?????SUM((CASE?SIGN(工資-800)*SIGN(工資-1000)?????????????????????/**//*用*來實現(xiàn)<和>功能*/
??????????WHEN?-1?THEN?1?ELSE?0?END)+(CASE?工資
??????????WHEN?800???THEN?1?ELSE?0?END))?as?從800至999,??????????/**//*注意別名不能以數(shù)字開頭*/
?????SUM((CASE?SIGN(工資-1000)*SIGN(工資-1200)
??????????WHEN?-1?THEN?1?ELSE?0?END)+(CASE?工資
??????????WHEN?1000?THEN?1?ELSE?0?END))?as?從1000元至1199元,
?????SUM((CASE?SIGN(工資-1200)?WHEN?1?THEN?1?ELSE?0?END)
?????+(CASE?工資?WHEN?1200?THEN?1?ELSE?0?END))?as?大于1200元
FroM?工資明細表?
GROUP?BY?部門名
轉(zhuǎn)載于:https://www.cnblogs.com/temptation/archive/2008/03/25/1121149.html
總結(jié)
以上是生活随笔為你收集整理的[转] SQL Server中的行列转换问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GB28181协议之语音对讲
- 下一篇: Newtonsoft.Json Dese