我想获取表中每条记录的最小日期,该表具有多个带有一个主键的日期条目。看看我的 table :
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
的所有记录.
最佳答案
您可以使用 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;
关于sql - 查询获取每条记录的最小日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16208159/