我保留一个日志,在其中输入作业,描述,TC代码,单位,请求的日期和请求者。从这里,我需要返回每个作业,以及每个不同的TC代码(它将继续增长)以及要求日期为“最大日期”的其余信息。
EX日志:
Job Desc TC CODE Units Date Rqstr
17 MCD Days 5 4/1/19 Fred
20 BK Days 10 4/1/19 John
17 MCD Crew 8 4/2/19 Bob
33 WEN Days 10 4/1/19 Dave
40 ARB Crew 7 4/3/19 Jim
40 ARB Hours 10 4/3/19 Jim
17 MCD Days 10 4/5/19 Tim
17 MCD Con 5 4/5/19 Tim
20 BK Days 8 4/8/19 Tye
20 BK Crew 3 4/8/19 Tye
17 MCD Crew 5 4/8/19 Tim
我尝试了行号,但是我不能真正地划分TC代码,因为每个工作也需要每个不同的代码。分区将仅返回不同的TC代码,并列出日期为最大日期的作业
select [Job],
[Description],
[TC Code],
[Units],
[Date Requested],
[Requestor]
from (Select [Job],
[Description],
[TC Code],
[Units],
[Date Requested],
[Requestor],
row_number() over(partition by [TC Code] order by [Date Requested]
desc) as rn
from [dbo].['VAR ADJ Log$']) as t
where rn = 1
我需要的结果:
我需要为每个作业返回每个带有最新日期的TC代码。在工作17上可以看到,引入并添加了一个新的TC代码,而Crew TC代码被最新的TC代码取代。
Job Desc TC CODE Units Date Rqstr
17 MCD Days 10 4/5/19 Tim
17 MCD Crew 5 4/8/19 Tim
17 MCD Con 5 4/5/19 Tim
20 BK Days 8 4/8/19 Tye
20 BK Crew 3 4/8/19 Tye
33 WEN Days 10 4/1/19 Dave
40 ARB Crew 7 4/3/19 Jim
40 ARB Hours 10 4/3/19 Jim
答案 0 :(得分:0)
这是您想要的吗?
select val.*
from [dbo].['VAR ADJ Log$'] val
where val.date = (select max(val2.date)
from [dbo].['VAR ADJ Log$'] val2
where val2.job = val.job and val2.[TC Code] = val2.[TC Code]
);
您也可以使用窗口功能执行此操作(尽管可能没有特别的优势)。这似乎是您要求的逻辑。