我在弄清楚如何从查询中获得正确的日期时遇到了问题。我需要为每个工单编号提取最早的日期,但由于我的子查询中不能有Order By,所以我不确定该走哪条路线。--MSSQL 2016
Create Table #FOO
(
Job varchar(4),
CurrentMilestone varchar(10),
MilestoneDate DATETIME
)
INSERT INTO #FOO (Job,CurrentMilestone,MilestoneDate)
VALUES ('P5','ONSITE','2017-10-23');
INSERT INTO #FOO (Job,CurrentMilestone,MilestoneDate)
VALUES ('P5','PAINT','2017-11-01');
INSERT INTO #FOO (Job,CurrentMilestone,MilestoneDate)
VALUES ('P5','SHIP','2018-02-01');
INSERT INTO #FOO (Job,CurrentMilestone,MilestoneDate)
VALUES ('P5','OFFSITE','2017-12-20');
INSERT INTO #FOO (Job,CurrentMilestone,MilestoneDate)
VALUES ('P16','BREAK','2017-10-10');
INSERT INTO #FOO (Job,CurrentMilestone,MilestoneDate)
VALUES ('P16','ONSITE','2017-11-11');
INSERT INTO #FOO (Job,CurrentMilestone,MilestoneDate)
VALUES ('P16','HACK','2017-12-20');
INSERT INTO #FOO (Job,CurrentMilestone,MilestoneDate)
VALUES ('P16','SHIP','2018-05-01');
SELECT * FROM #FOO;
SELECT f.Job,f.CurrentMilestone, f.MilestoneDate
FROM (SELECT Job, MAX(MilestoneDate) as MilestoneDate
FROM #FOO
GROUP BY Job
) a
JOIN #FOO f ON a.Job = f.job AND a.MilestoneDate = f.MilestoneDate
ORDER BY f.MilestoneDate ASC
IF OBJECT_ID('tempdb..#FOO') IS NOT NULL DROP TABLE #FOO
GO
我的返回应该是这样的:
Job CurrentMilestone MilestoneDate
P5 ONSITE 2017-10-23
P16 BREAK 2017-10-10
转载请注明出处:http://www.beijingklxcmc.com/article/20230526/2243127.html