我有两个由唯一字段“drive_id”连接的表。每个 drive_id 可以有一个或多个 shift_ID,但班次只存储在一个表中。投影数据由表 1 中的“shift_id”存储,产品数据由表 2 中的“drive_id”存储。
我可以获得 drive_id 的详细信息以准确报告,但是当我尝试对所有 drive_id 进行总计时,由于表 1 中加入了两个班次,我得到了两倍的产品。
数据如下所示:
桌子 | drive_id | shift_id | 预计 | 实际的 | QNS | 延期 |
---|---|---|---|---|---|---|
drive_actuals | 47058 | 不存在 | 0 | 57 | 3 | 8 |
drive_actuals | 47532 | 不存在 | 0 | 23 | 1 | 2 |
drive_proj | 47058 | 43203 | 25 | 不存在 | 不存在 | 不存在 |
drive_actuals | 47058 | 29575 | 25 | 不存在 | 不存在 | 不存在 |
drive_actuals | 475352 | 39690 | 20 | 不存在 | 不存在 | 不存在 |
这是所需的输出:
Drive_id | 项目 | 实际的 | QNS | 延期 |
---|---|---|---|---|
47058 | 50 | 57 | 3 | 8 |
47532 | 20 | 23 | 1 | 2 |
全部的 | 70 | 80 | 4 | 10 |
这是我得到的:
Drive_id | 项目 | 实际的 | QNS | 延期 |
---|---|---|---|---|
47058 | 50 | 57 | 3 | 8 |
47532 | 20 | 23 | 1 | 2 |
全部的 | 70 | 137 | 7 | 18 |
由于两个班次,驱动器 47058 的实际、QNS 和延期的总数是两倍。
select * from (select dp.drive_id as 'DriveID',sum(dp.procedures) as 'Projected', da.actual_products as 'Collected',da.qns as 'QNS',da.deferrals as 'Deferred' from drive_actuals da left join drive_projections dp on da.drive_id=dp.drive_id where dp.drive_id in (47058,47532) group by dp.drive_id,'Projected','Registered','QNS','Deferred') as a1 UNION select * from (select '' as 'DriveID',sum(dp.procedures) as 'Projected', sum(da.actual_products) as 'Collected',sum(da.qns) as 'QNS',sum(da.deferrals) as 'Deferred' from drive_actuals da left join drive_projections dp on da.drive_id=dp.drive_id where shi dp.drive_id in (47058,47532)) as b1
如何让实际值只返回详细行和总行中的一行?