如何创建Oracle一对多统计视图?

时间:2018-03-18 07:45:50

标签: oracle plsql

我有三个表需要加入统计信息。A table对应B table中的多行,而B有状态。我需要计算B中报废状态的数量和非拒绝状态行的一些属性,最后是grouped by A的条形码,但我不知道如何在查询中查询不同状态的B将它们计算在A中。我尝试使用以下代码,但没有查询。

select 
    a.barcode barcode
    , count(b.id) effectiveNum
    , count(b2.id) scraps
    , sum(b.x * c.y)
from A a
    , B b
    , B b2
    , C c
where a.id = b.Aid 
and a.id = b2.Aid 
and b2.state = -1000 
and b.id = c.Bid
group by a.barcode

谁可以帮助我?

1 个答案:

答案 0 :(得分:0)

我认为你需要LEFT-JOIN才能接受B中的空列表。但正如APC所说,一些示例数据会很棒。

SELECT a.barcode   barcode,
         COUNT (b.id) effectiveNum,
         COUNT (b2.id) scraps,
         SUM (b.x * c.y)
    FROM A a
         LEFT JOIN B b ON a.id = b.Ai
         LEFT JOIN B b2 ON a.id = b2.Aid AND b2.state = -1000
         LEFT JOIN C c ON b.id = c.Bid
   WHERE 1 = 1 -- Filter A here if needed
GROUP BY a.barcode