我有两个独立工作的查询;我需要将这些结果结合起来。
- 获取所有字段(包括
wdate
和Empid
(,从Fromdate
到ToDate
。 - 计算特定
wdate
的值(用于效率,Efc
(,并从第一个查询Empid
。
第一个查询
SELECT *
FROM tblProductionEffcyDetails
WHERE wDate BETWEEN '06/26/2019' AND '07/25/2019'
AND worker = 'Techn'
ORDER BY Empid, wDate
第二个查询
SELECT Cast(ROUND(SUM(Tstdmin) / NULLIF(SUM(TAvlblmin), 0) * 100,0) as int) AS [Efc]
FROM tblProductionEffcyDetails
WHERE wDate='07/11/2019'
AND Empid='00021'
GROUP BY wdate, Empid
也就是说,在此第二个查询中,wDate
和 Empid
的值应来自第一个查询的结果。
关于数据/表格的说明:
- 任何特定的日期(
wDate
(或人物(Empid
(可以有任何数字的条目。 - 效率(
Efc
(每天只应给予一次(wDate
(,即它不应该对特定wDate
有多个值。
表格结构如下
SL wDate Avlbl_Mins NP_Mins Empid Name Process Model Efc
117571 7/13/2019 0 0 21 MARRY Block removing 900-2930 80
117572 7/13/2019 0 0 21 MARRY Microscope checking 900-2929 Null
116872 6/26/2019 430 75 52 SUGANTHI Slab removing 900-2929 75
116873 6/26/2019 0 0 52 SUGANTHI Slab Removing 900-2528 Null
试试这个,
您可以使用第一个查询获取06/26/2019
和07/25/2019
之间的日期的特定Empid
,并通过将其连接到第二个查询来汇总它。
SELECT Empid, Cast(ROUND(SUM(Tstdmin) / NULLIF(SUM(TAvlblmin), 0) * 100,0) as int) AS [Efc]
FROM tblProductionEffcyDetails t
WHERE t.Empid in (
SELECT Empid
FROM tblProductionEffcyDetails tb
WHERE tb.wDate BETWEEN '06/26/2019' AND '07/25/2019'
AND tb.worker = 'Techn') and t.wDate BETWEEN '06/26/2019' AND '07/25/2019'
GROUP BY t.wdate, t.Empid
我在理解您的问题时进行了查询,如果它没有得到您想要的输出,请告诉我。 所以我可以改变答案。
希望这有帮助。
SELECT Empid, Cast(ROUND(SUM(Tstdmin) / NULLIF(SUM(TAvlblmin), 0) * 100,0) as
int) AS [Efc]
FROM (
SELECT *
FROM tblProductionEffcyDetails tb1
WHERE tb1.wDate BETWEEN '06/26/2019' AND '07/25/2019'
AND tb1.worker = 'Techn') as t
GROUP BY t.wdate, t.Empid