星期五, 8月 24, 2012

[SQL] 次序函數應用-重覆資料不顯示

此論壇問題是要重覆資料不顯示,一看見問題是直覺這不是應該在報表中設定,就可以達到的效果。


DECLARE @Temp TABLE (STDID char(4),StdName char(10),Course char(20))
INSERT INTO @Temp VALUES('0001','張三','ASP.NET')
INSERT INTO @Temp VALUES('0001','張三','HTML5')
INSERT INTO @Temp VALUES('0001','張三','CSS')
INSERT INTO @Temp VALUES('0002','李四','C#')
INSERT INTO @Temp VALUES('0003','王五','T-SQL')
INSERT INTO @Temp VALUES('0003','王五','SSRS')
INSERT INTO @Temp VALUES('0003','王五','SSIS')
INSERT INTO @Temp VALUES('0003','王五','Perfomance Tuning')

SELECT 
  IIF(ROWNO = 1 , STDID , NULL) AS STDID ,
  IIF(ROWNO = 1 , STDName , NULL) AS STDName ,
  Course
FROM
  (
    SELECT * ,
      ROW_NUMBER() OVER (PARTITION BY STDID ORDER BY STDID) AS ROWNO
    FROM @Temp
  ) AS T
  • 邏輯說明
利用 ROW_NUMBER() 根據 STDID 去跑出排序,在 SELECT 中根據排序利用 CASE WHEN 或是 IIF 來判斷是不是第一筆資料,非第一筆資料則用 NULL 來表示。

沒有留言:

張貼留言