请教高手一个sql的问题,紧急!!
数据表
n_id number s_id
1 0099888 1
2 0098393 2
39038323 1
4 2345476 1
53257657 3
63223232 2
需要的结果
s_id number1 number2 number3
1 0099888 9038323 2345476
2 0098393 3223232 null
3 3257657 null null
4 nul null null
请教高手,这个Sql语句该怎么写?
在SQL server 2000里用的,没有开窗函数 SQL 转置
[解决办法]
你搜索一下行列转换。这是百度上一个解决的很好的问题。
http://zhidao.baidu.com/question/570840293.html?quesup2&oldq=1
[解决办法]
SELECT
s_id,
number1 = MAX(CASE rowid WHEN 1 THEN number END),
number2 = MAX(CASE rowid WHEN 2 THEN number END),
number3 = MAX(CASE rowid WHEN 3 THEN number END)
FROM
(
SELECT rowid = (SELECT COUNT(*) FROM TB b WHERE b.s_id=a.s_id and b.n_id <= a.n_id), * FROM TB a
) t
GROUP BY s_id
ORDER BY s_id