[英]Select all columns for a distinct column
我需要從具有200多個列的表中獲取特定列的不同行。 我該如何實現?
我用了
Select distinct col1 , * from table;
但是失敗了。
請提出一種達到此目的的優雅方法。
問候,塔倫
如果要在特定列中為每個不同的值排成一行的解決方案是:
SELECT col1, MAX(col2), MAX(col3), MAX(col4), ...
FROM mytable
GROUP BY col1
我任意選擇了MAX()。 它也可以是MIN()或其他聚合函數。 關鍵是,如果您使用GROUP BY來確保col1中的每個值獲取一行,那么所有其他列都必須在聚合函數中。
無法編寫MAX(*)來對所有列進行處理。 抱歉,您將不得不寫出所有列名(至少此查詢中需要的列名,可能不是全部200個)。
我們可以為每個COL1
生成一個ROW_NUMBER()
序列,然后選擇每個序列的第一個條目。
SELECT * FROM
(
SELECT E.* , ROW_NUMBER() OVER( PARTITION BY COL1 ORDER BY 1) AS ID
FROM YOURTABLE E
) MYDATA
WHERE MYDATA.ID = 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.