[英]SQL SELECT with DISTINCT on multiple columns
In SQL multiple fields may also be added with DISTINCT clause.在 SQL 中,也可以使用 DISTINCT 子句添加多个字段。 DISTINCT will eliminate those rows where all the selected fields are identical.
DISTINCT 将消除所有选定字段都相同的行。
SQL Code: 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 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
Output:输出:
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
Want To Optimize My Query想要优化我的查询
It appears that you want to retain each distinct name which occurs the earliest.您似乎希望保留最早出现的每个不同名称。 One option uses a subquery:
一种选择使用子查询:
SELECT ID, Name, Date
FROM yourTable t1
WHERE Date = (SELECT MIN(Date) FROM yourTable t2 WHERE t2.Name = t1.Name)
Note this solution would return more than one record per name group should there be a tie for two records having the minimum date.请注意,如果两条具有最短日期的记录并列,则此解决方案将返回每个名称组的多个记录。 But the sample data does not seem to imply that this would happen.
但样本数据似乎并不暗示会发生这种情况。
这是你想要的吗?
select min(id),name, min(date) from table_1 group by name
Looks like you are looking for the earliest date for each Name.看起来您正在寻找每个名称的最早日期。 This query will achieve that.
这个查询将实现这一点。 It will group it by Name and give the minimum date for that Name.
它将按名称对其进行分组并给出该名称的最短日期。
SELECT Name,MIN(Date) FROM table_1 GROUP BY Name
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.