我有一個查詢產生多個結果。我將幾個列連接成1作爲ID。我只想顯示ID是唯一的行。SQL Server只顯示具有不同列名的行(所有列)
下面的圖片是我的表的例子:
正如你可以看到ID重複幾次。我如何構建查詢以僅顯示3個唯一行?
嵌套此查詢並使用distinct(RowID)
顯示三行,但我無法顯示其餘列?
任何想法歡迎。謝謝!
我有一個查詢產生多個結果。我將幾個列連接成1作爲ID。我只想顯示ID是唯一的行。SQL Server只顯示具有不同列名的行(所有列)
下面的圖片是我的表的例子:
正如你可以看到ID重複幾次。我如何構建查詢以僅顯示3個唯一行?
嵌套此查詢並使用distinct(RowID)
顯示三行,但我無法顯示其餘列?
任何想法歡迎。謝謝!
使用在選擇不同的對所有列
查詢:
select distinct RowID, OrderNum, cDescription, Thickness, UllTimberThickness, Width, UllTimberWidth, Length
from YourTable
使用GROUP BY
:
SELECT RowID, OrderNum, cDescription, Thickness, etcetera ...
FROM dbo.TableName
GROUP BY RowID, OrderNum, cDescription, Thickness, etcetera ...
(諸如此類爲您的列的其餘部分的佔位符)
試試這個:
SELECT *
FROM mytable t1
WHERE
(SELECT COUNT(*) FROM mytable t2
where t2.id = t1.id) = 1
這樣,你得到的所有行ID是獨特的。我寫這個查詢是因爲我不知道你的ID是否與其他字段相同,因爲你已經爲你的字段建立了一組信息。如果所有的列對於相同的id是相同的,那麼你可以使用Vasanth Sundaralingam在他的文章中提出的語句DISTINCT。
我對什麼是「得到了三個獨特的行表示」有點困惑。
如果你的意思是唯一行,請使用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;
請添加某種澄清/理由爲這個答案 – tnw
好吧,我已經整合了我的解決方案 –