2013-02-09 21 views
0

我是這個主題的新增功能,需要幫助... 如何在查詢中僅隱藏一個SQL查詢中的重複項?例如,我有一個表如何在查詢中爲SQL中的一個字段隱藏重複項?

  • 1,122,123,6
  • 2,122,156,7
  • 3,122,188,6
  • 4,101,186,8

,我想表

  • 122,123,6
  • 空,156,7
  • 空,188,6
  • 101,186,8

「Emty」 是指該細胞應該是emty。謝謝你的幫助。

+0

我可以使用存儲過程嗎? – 2013-02-09 09:42:32

回答

2

這是一種可能的方式:

DECLARE @t TABLE (col1 INT, col2 INT, col3 INT, col4 INT) 
INSERT @t VALUES 
(1, 122, 123, 69), 
(2, 122, 156, 7), 
(3, 122, 188, 6), 
(4, 101, 186, 8) 

SELECT CASE WHEN ROW_NUMBER() OVER (PARTITION BY col2 ORDER BY col1) = 1 THEN col2 END col2_New 
     , col3 
     , col4 
FROM @t 
ORDER BY 
     col1 

只有col2第一次出現被它寫在結果集中值(值由col1升序排列),否則該值爲NULL(在數據庫術語意味着沒有定義的值)。它使用TSQL ROW_NUMBER函數,你可以閱讀它here。調用ROW_NUMBER函數包含在CASE ... WHEN ... THEN ... END條件表達式中,該條件表達式可以僅在出現特定值時才寫出col2的值。

+0

它的工作原理!非常感謝! – 2013-02-10 13:43:47

+0

太棒了!不客氣,如果您發現這個答案有幫助,您可以將其標記爲正確。你可以接受像[this]這樣的答案(http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) – 2013-02-10 18:31:19