簡體   English   中英

選擇所有列作為不同的列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM