作者wellwind (..)
看板Database
标题[SQL ] 问题 资料表横向展示,但资料内容重覆时...
时间Tue Aug 10 11:30:35 2010
各位前辈好
小弟目前正在设计一个成绩排名系统
排名资料库格式大概如下
组别 学号 排名
001 00101 1
001 00103 2
001 00110 3
002 00204 1
002 00205 2
002 00214 3
目前是可以用类似下面的语法转成横向显示
SELECT [组别],
MAX([学号1]) AS [第一名学号],
MAX([学号2]) AS [第二名学号],
MAX([学号3]) AS [第三名学号]
FROM(
SELECT [组别],
CASE [排名] WHEN 1 THEN [学号] END AS [学号1],
CASE [排名] WHEN 2 THEN [学号] END AS [学号2],
CASE [排名] WHEN 3 THEN [学号] END AS [学号3]
FROM score_tbl
) AS tbl2
GROUP BY [组别]
查出来的表会变成这样
组别 第一名学号 第二名学号 第三名学号
001 00101 00103 00110
002 00204 00205 00214
不过这样没有版法除里相同排名的问题,例如同时是第一名,
或第四名跟第三名同分并列第三时,希望可以像这样排
组别 第一名学号 第二名学号 第三名学号
001 00101 NULL 00110
001 00103 NULL NULL
(00101,00103并列第一,所以00110是第三名)
002 00204 00205 00214
002 NULL NULL 00215
(00214,00215并列第三,所以虽然是取前三名,但实际上有四名)
遇到这样的要求,目前脑袋是一片空白,想请问各位该如何做这样的查询?
资料库是SQL Server 2005
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.119.40.19
1F:推 tw70126:这要用到 temp table 才有解了吧.......... 08/11 13:02