[英]SQL SELECT with DISTINCT on multiple columns
在 SQL 中,也可以使用 DISTINCT 子句添加多個字段。 DISTINCT 將消除所有選定字段都相同的行。
SQL 代碼:
SELECT agent_code, ord_amount, cust_code, ord_num
FROM orders
WHERE agent_code='A002';
ORD_NUM ORD_AMOUNT ADVANCE_AMOUNT ORD_DATE CUST_CODE AGENT_CODE
200114 3500 2000 15-AUG-08 C00002 A008
200122 2500 400 16-SEP-08 C00003 A004
200118 500 100 20-JUL-08 C00023 A006
200119 4000 700 16-SEP-08 C00007 A010
200121 1500 600 23-SEP-08 C00008 A004
200130 2500 400 30-JUL-08 C00025 A011
200134 4200 1800 25-SEP-08 C00004 A005
200108 4000 600 15-FEB-08 C00008 A004
200103 1500 700 15-MAY-08 C00021 A005
200105 2500 500 18-JUL-08 C00025 A011
200109 3500 800 30-JUL-08 C00011 A010
200101 3000 1000 15-JUL-08 C00001 A008
200111 1000 300 10-JUL-08 C00020 A008
200104 1500 500 13-MAR-08 C00006 A004
200106 2500 700 20-APR-08 C00005 A002
200125 2000 600 10-OCT-08 C00018 A005
200117 800 200 20-OCT-08 C00014 A001
200123 500 100 16-SEP-08 C00022 A002
200120 500 100 20-JUL-08 C00009 A002
200116 500 100 13-JUL-08 C00010 A009
200124 500 100 20-JUN-08 C00017 A007
200126 500 100 24-JUN-08 C00022 A002
200129 2500 500 20-JUL-08 C00024 A006
200127 2500 400 20-JUL-08 C00015 A003
200128 3500 1500 20-JUL-08 C00009 A002
200135 2000 800 16-SEP-08 C00007 A010
200131 900 150 26-AUG-08 C00012 A012
200133 1200 400 29-JUN-08 C00009 A002
200100 1000 600 08-JAN-08 C00015 A003
200110 3000 500 15-APR-08 C00019 A010
200107 4500 900 30-AUG-08 C00007 A010
200112 2000 400 30-MAY-08 C00016 A007
200113 4000 600 10-JUN-08 C00022 A002
200102 2000 300 25-MAY-08 C00012 A012
輸出:
AGENT_CODE ORD_AMOUNT CUST_CODE ORD_NUM
---------- ---------- ---------- ----------
A002 2500 C00005 200106
A002 500 C00022 200123
A002 500 C00009 200120
A002 500 C00022 200126
A002 3500 C00009 200128
A002 1200 C00009 200133
A002 4000 C00022 200113
想要優化我的查詢
您似乎希望保留最早出現的每個不同名稱。 一種選擇使用子查詢:
SELECT ID, Name, Date
FROM yourTable t1
WHERE Date = (SELECT MIN(Date) FROM yourTable t2 WHERE t2.Name = t1.Name)
請注意,如果兩條具有最短日期的記錄並列,則此解決方案將返回每個名稱組的多個記錄。 但樣本數據似乎並不暗示會發生這種情況。
這是你想要的嗎?
select min(id),name, min(date) from table_1 group by name
看起來您正在尋找每個名稱的最早日期。 這個查詢將實現這一點。 它將按名稱對其進行分組並給出該名稱的最短日期。
SELECT Name,MIN(Date) FROM table_1 GROUP BY Name
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.