sql - SQL Server 子查询
问题描述
我想结合 2 个 SQL 查询,第一个查询我想拉回最近一个月的员工记录,第二个查询拉回最近 3 个月的记录。
有一种疯狂的方法,员工可以每个月更换经理,但最近几个月的经理需要查看他们员工前 3 个月的记录,即使该员工在那几个月有不同的经理。
这是最近一个月的第一个选择
/******latest month*****************/
SELECT [REPORT_DT]
,[EMPLOYEE_ID]
,[EMPLOYEE_NAME]
,[LOCATION]
,[JOB_DESCRIPTION]
,[MANAGER_ID]
FROM [EMPLOYEE]
where [REPORT_DT]=
(select max([REPORT_DT]) from [EMPLOYEE])
这是过去 3 个月的选择
/*********last 3 months*******************/
SELECT [REPORT_DT]
,[EMPLOYEE_ID]
,[EMPLOYEE_NAME]
,[LOCATION]
,[JOB_DESCRIPTION]
,[MANAGER_ID]
FROM [EMPLOYEE]
where [REPORT_DT]>=
( DATEADD(M, -3, GETDATE()))
我将加入 [EMPLOYEE_ID] 上的 2 个选择。有什么想法可以组合这两个查询吗?谢谢!
解决方案
我会使用:
SELECT TOP 1 WITH TIES
[REPORT_DT],
[EMPLOYEE_ID],
[EMPLOYEE_NAME],
[LOCATION],
[JOB_DESCRIPTION],
[MANAGER_ID],
FROM [EMPLOYEE]
WHERE
[REPORT_DT] >= DATEADD(M, -3, GETDATE()
ORDER BY
[REPORT_DT] DESC;
上面的WHERE
子句匹配您的第二个查询,我们使用一种TOP 1 WITH TIES
方法来获取表中具有最大值的记录REPORT_DT
。
推荐阅读
- linux - 添加 fftw 包时 Yocto bitbake 构建错误
- android - 如何使用 TabLayout 在 Fragment 中添加 ListView?
- python - 安装 simple_draw 时出错:bitbucket URL 上的 404
- winforms - WinForms - 无法将图片添加到图片框
- c# - 如何仅针对某些端点从 WSDL 生成 WCF 客户端?
- python - xgboost.plot_tree 显示 - 空字符/框/块作为标签
- java - Everit 架构构建器将未设置的属性包括为 null
- r - 如何在 geom_text / nudge_y 中使用条件
- php - 在 ReactPHP 中发送响应后关闭服务器
- xml - 如何继承 qweb 报告模板并替换 odoo 中的元素