我有三个表需要加入统计信息。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
谁可以帮助我?
答案 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