ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

经理说太复杂,非要分布查询。生气。

2019-08-09 10:43:09  阅读:354  来源: 互联网

标签:DATEPART JOIN r1 r2 经理 生气 查询 RequestDate ID


已知
tblEquipment设备表
设备表
tblRequest请求表
请求表
jctRequestEqpt请求-设备关联中间表
设备-请求中间关联表
目的:查询根据某字段(例如部门)查询某年每月和上月请求数量,得出每月增长率,

SELECT e.DepartmentID, DATEPART(MONTH ,r1.RequestDate) AS month,COUNT(DISTINCT r1.ID) AS now,COUNT(DISTINCT r2.ID) AS pre
FROM tblRequest r1

LEFT JOIN jctRequestEqpt re ON re.RequestID =r1.ID
LEFT JOIN tblEquipment e ON e.ID =re.EquipmentID

LEFT JOIN
(
SELECT sr.ID ID,sr.RequestDate,sr.RequestType,e.DepartmentID
FROM tblEquipment e
LEFT JOIN jctRequestEqpt sre ON sre.EquipmentID = e.ID
LEFT JOIN tblRequest sr ON sr.ID =sre.RequestID
) r2
ON r1.RequestType =r2.RequestType
AND DATEPART(MONTH,r1.RequestDate) = DATEPART(MONTH ,r2.RequestDate)+1
AND DATEPART(YEAR,r1.RequestDate) = DATEPART(YEAR ,r2.RequestDate)
AND r2.DepartmentID =e.DepartmentID

WHERE r1.RequestType=1 AND DATEPART(YEAR,r1.RequestDate)=2019 AND re.RequestID IS NOT NULL AND re.EquipmentID IS NOT NULL
GROUP BY DATEPART(MONTH ,r1.RequestDate) ,e.DepartmentID
得到数据:
查询所得数据
经理看到后,说太复杂,以后别人维护起来不太好整,用分步查询,先查一个月 再查上一个月,得到数据后,进行匹配再封装。
我就*了*了,哪里复杂了,三个join,一个临时表的分组查询,
一个查询就得到目标数据了,为什么要分开查 ,再去循环封装。
太阳!!

标签:DATEPART,JOIN,r1,r2,经理,生气,查询,RequestDate,ID
来源: https://blog.csdn.net/qq_43016856/article/details/98942242

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有