我想获得表格中每条记录的最小日期,其中包含一个主键的多个日期条目。看看我的桌子:
CaseNo Entry_date
ABC-001 2/12/13
ABC-002 2/09/13
ABC-001 1/01/13
ABC-001 1/31/13
ABC-002 1/01/13
ABC-003 2/01/12
ABC-003 2/18/13
我希望得到这样的结果:
CaseNo Entry_date Min_date
ABC-001 2/12/13 1/01/13
ABC-002 2/09/13 1/09/13
ABC-001 1/01/13 1/01/13
ABC-001 1/31/13 1/01/13
ABC-002 1/09/13 1/09/13
ABC-003 2/01/12 2/01/13
ABC-003 2/18/13 2/01/13
我想获得记录在桌面上的每个CaseNo的最小日期。我试过这段代码:
Select
CaseNo,Entry_date, Min(Entry_date) as Min_date
from mytable group by CaseNo
结果如下:
CaseNo Entry_date Min_date
ABC-001 1/01/13 1/01/13
ABC-002 1/09/13 1/09/13
ABC-003 2/01/12 2/01/13
代码删除没有最小日期的行。我想显示最短日期为Min_date
的所有记录。
答案 0 :(得分:1)
Select a.Case_No,
a.Entry_date,
Min(b.Entry_date) as Min_date
from mytable a,
mytable b
where a.case_no = b.case_no
group by a.Case_No, a.entry_date
order by a.entry_date
答案 1 :(得分:1)
您可以使用CTE或子查询来解决它。 CTE有更好的表现。
子查询版
SELECT
CaseNo,
Entry_date,
(SELECT MIN(Entry_date) FROM Cases subc WHERE subc.CaseNo=c.CaseNo GROUP BY CaseNo) AS MinEntryDate
FROM Cases c;
CTE版
WITH CasesMinEntryDate(CaseNo, MinEntryDate) AS
(
SELECT CaseNo, MIN(Entry_date) FROM Cases GROUP BY CaseNo
)
SELECT
c.CaseNo,
Entry_date,
MinEntryDate
FROM Cases c
INNER JOIN CasesMinEntryDate cmed ON c.CaseNo=cmed.CaseNo;