6

SQL クエリに問題があります。
私はテーブルAを持っています:

productA priceA  
P1        18  
P2        35  
P1        22  
P2        19  

また、tableB:

productB priceB  
P1        3  
P2        15  
P1        80  
P2        96  

結果として、2 つのテーブルからの 2 つの製品の合計が必要です。

product price  
P1       123  
P2       165  

2 つのテーブルの合計を合計したい。
このクエリを試していますが、間違っています。

SELECT productA, 
     (SELECT SUM(priceA) FROM tableA GROUP BY productA), 
     (SELECT SUM(priceB) FROM tableB GROUP BY productB)
FROM tableA, tableB
WHERE productA = productB
GROUP BY productA

私を助けてください。

4

3 に答える 3

3

a を使用unionしてテーブルをマージしgroup by、結果を次のようにすることができます。

select  product
,       sum(price)
from    (
        select  productA as product
        ,       priceA as price
        from    TableA
        union all
        select  productB
        ,       priceB
        from    TableB
        ) as SubQueryAlias
group by
        product
于 2012-12-01T09:15:50.663 に答える
1

これは文字通り合計の合計です。

select
    product,
    sum(price)
from (
    select productA as product, sum(priceA) as price from tableA group by 1
    union all
    select productB, sum(priceB) from tableB group by 1
) 
group by 1
于 2012-12-01T09:20:01.033 に答える
0

結合はこの問題にアプローチする自然な方法のように思われるため、joinではなくを使用した解決策を次に示しunionます。最初にサブクエリのデータを集計し、次に結果を結合します。

select coalesce(a.productA, b.productB) as product,
       coalesce(a.PriceA, 0) + coalesce(b.PriceB, 0) as price
from (select productA, sum(PriceA) as PriceA
      from TableA
      group by productA
     ) a full outer join
     (select productB, sum(PriceB) as PriceB
      from TableB
      group by productB
     ) b
     on a.productA = b.prodctB

full outer joinテーブルに異なる製品セットがある場合に備えて、を使用しています。その結果、ステートメントに を含める必要がありcoalesceますselect

于 2012-12-01T17:48:51.170 に答える