0

我有两个由唯一字段“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
    

如何让实际值只返回详细行和总行中的一行?

4

0 回答 0