今天有个朋友在sql server2000中想实现行列转换, 问我有没有类似oracle中DECODE的函数,
我查了一下没有,但在sql2000种我们可以通过聚合函数(sum,max,min,avg...等)和case语句才实现行列转换 。
比如表t如下:
班级(class) 性别(sex) 总数(total)
1 1 10
1 2 30
2 1 20
2 2 26
3 1 30
3 2 18
..........................................
以上数据1代表男性 2代表女性 如果想实现以下格式的报表
班级 男生 女生 总数
1 10 20 30
2 20 26 46
3 30 18 48
............................
经过实现我们可以通过以下语句实现
SELECT class AS 班级,
SUM(CASE WHEN sex = 1 THEN total ELSE 0) as 男生,
SUM(CASE WHEN sex = 2 THEN total ELSE 0) as 女生,
SUM(total) AS 总数
FROM t
GROUP BY class
/
sql server2005中好像增强了该功能,提供了更加友好的函数来实现行列转换。具体还没有研究过。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/129805/viewspace-926838/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/129805/viewspace-926838/