2013-07-18 381 views
1

我有一個查詢產生多個結果。我將幾個列連接成1作爲ID。我只想顯示ID是唯一的行。SQL Server只顯示具有不同列名的行(所有列)

下面的圖片是我的表的例子:

enter image description here

正如你可以看到ID重複幾次。我如何構建查詢以僅顯示3個唯一行?

嵌套此查詢並使用distinct(RowID)顯示三行,但我無法顯示其餘列?

任何想法歡迎。謝謝!

回答

1

使用在選擇不同的對所有列

查詢:

select distinct RowID, OrderNum, cDescription, Thickness, UllTimberThickness, Width, UllTimberWidth, Length 
from YourTable 
0

使用GROUP BY

SELECT RowID, OrderNum, cDescription, Thickness, etcetera ... 
FROM dbo.TableName 
GROUP BY RowID, OrderNum, cDescription, Thickness, etcetera ... 

(諸如此類爲您的列的其餘部分的佔位符)

0

試試這個:

SELECT * 
FROM mytable t1 
WHERE 
    (SELECT COUNT(*) FROM mytable t2 
    where t2.id = t1.id) = 1 

這樣,你得到的所有行ID是獨特的。我寫這個查詢是因爲我不知道你的ID是否與其他字段相同,因爲你已經爲你的字段建立了一組信息。如果所有的列對於相同的id是相同的,那麼你可以使用Vasanth Sundaralingam在他的文章中提出的語句DISTINCT。

+0

請添加某種澄清/理由爲這個答案 – tnw

+0

好吧,我已經整合了我的解決方案 –

0

我對什麼是「得到了三個獨特的行表示」有點困惑。

如果你的意思是唯一行,請使用count(*)作爲窗口函數:

select * 
from (select t.*, 
      count(*) over (partition by id) as cnt 
     from t 
    ) t 
where cnt = 1; 

如果你的意思是每一行的一個例子,使用row_number()

select * 
from (select t.*, 
      row_number(*) over (partition by id order by (select NULL)) as seqnum 
     from t 
    ) t 
where seqnum = 1; 
相關問題