读书人

一个sql的有关问题紧急

发布时间: 2013-08-09 15:16:24 作者: rapoo

请教高手一个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

读书人网 >SQL Server

热点推荐