sql server 2000中的行列转换

来源:这里教程网 时间:2026-03-02 09:56:32 作者:

今天有个朋友在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中好像增强了该功能,提供了更加友好的函数来实现行列转换。具体还没有研究过。

[@more@]

相关推荐

热文推荐