sql - 如何返回具有最大日期的动态表
问题描述
我保留一个日志,在其中输入工作、描述、TC 代码、单位、请求日期和请求者。从这里我需要返回每个作业,以及每个不同的 TC 代码(将继续增长)以及请求日期为 Max Date 的其余信息。
前日志:
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 代码。正如您在 Job 17 中看到的那样,引入并添加了新的 TC 代码,并将 Crew 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
解决方案
这是你想要的吗?
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]
);
您也可以使用窗口函数来执行此操作(尽管可能没有特别的优势)。这似乎是您要求的逻辑。
推荐阅读
- python - 如何在 Django 中呈现多个表单
- python - dataframe combine_first does not work as well as fillna
- c# - 展平数据库中实体上的复杂对象
- java - 需要通过section id从HTML中获取href
- angular - 如何在angular2+中使用螺栓而不是http请求
- angular - 变量在打字稿中自动更改
- php - SQL: Select all rows that match something in another table
- symfony - I can not retrieve the parameters of a URL passed in GET in symfony 3
- ngrx - ngrx/store 选择器返回 [object Object]
- c# - 将多个 SQL 文件合并为一个 SQL 文件