簡體   English   中英

如何為多列的每種唯一組合選擇一行?

[英]How do I select a single row for each unique combination of multiple columns?

表/數據/ SQL示例: SQLFIDDLE

SELECT
  name,
  p1,
  p2,
  MIN(o1) as o1,
  MIN(o2) as o2
  FROM LOCS l
  GROUP BY l.name, l.p1, l.p2
  ORDER BY name asc

我提出的當前SQL返回正確的數據,但是實際表有100多個列,並且會不斷變化,因此沒有辦法對每一列進行MIN()。

我需要為“名稱”,“ p1”和“ p2”的每種組合選擇一行。

如果要選擇在分組中選擇“第一”行,則可以使用row_number() -假設您已定義了“第一”行。

例如,如果o1列指定順序,則下面的行給出了具有最低o1值的特定namep1p2組合:

SELECT l.*
FROM (SELECT l.*, ROW_NUMBER() OVER (PARTITION BY name, p1, p2 ORDER BY o1) as seqnum
      FROM LOCS l
     ) l
WHERE seqnum = 1
ORDER BY name asc;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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