我有两个独立工作的查询;我需要合并这些结果。
- 获取从
Fromdate
到ToDate
的所有字段(包括wdate
和Empid
)。 - 根据第一个查询计算特定
wdate
和Empid
的值(为了提高效率,Efc
)。
第一个查询
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
我根据理解您的问题进行了查询,如果没有得到您想要的输出,请告诉我。这样我就可以更改答案。
希望这有帮助。
关于mysql - 选择语句: Select referring previous select query,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57049832/