3

こんにちは私はSQLを学んでいて、複数のテーブルからいくつかのデータを取得しようとしていますが、希望どおりに表示することができないので、これが可能かどうか疑問に思っています。可能であれば、誰かが方法を提案できますか?下記参照:

    Table1:                     Table2:                     Table3

    Package       Licenses      Package       Licenses      Package      Licenses
    ======================      ======================      =====================
    Product1         20         Product1         15         Product1        0
    Product2         15         Product2         5          Product2        5
    Product3         10         Product3         10         Product3        0

[ライセンス]列の値をパッケージ名に従って相互に追加し、可能であれば次のように表示したいと思います。

    Package       Licenses
    ======================
    Product1         35
    Product2         25
    Product3         20

誰かがこれをどのように行うことができるかを私に知らせてくれたら、そのようなことが可能でさえあれば私に知らせてください。

4

3 に答える 3

2

それはあなたが研究する必要があるUNION ALL条項と声明です。GROUP BY

解決策の要点は

  • を使用してすべてのテーブルのすべての行を結合しますUNION ALL
  • 結果を副選択に入れます
  • GROUP BY副選択の結果に対してaとSUM集計関数を使用して合計ライセンスを計算します

SQLステートメント

SELECT Package, SUM(Licenses) AS Licenses
FROM   (
         SELECT Package, Licenses FROM Table1 UNION ALL
         SELECT Package, Licenses FROM Table2 UNION ALL
         SELECT Package, Licenses FROM Table3
       ) t
GROUP BY
       Package
于 2012-08-06T09:26:12.153 に答える
1

これを試して:

SELECT Package, SUM(Licences) as TotalLicences
  FROM (
        SELECT Package, Licences FROM Table1
         UNION ALL
        SELECT Package, Licences FROM Table2
         UNION ALL
        SELECT Package, Licences FROM Table3
       ) AS AllLicences
 GROUP BY Package
于 2012-08-06T09:28:15.847 に答える
0

を使用しunionて、すべてのライセンスのビューを作成できsumます。

select  Package
,       sum(Licences) as Licences
from    (
        select  Package
        ,       Licences
        from    Table1
        union all
        select  Package
        ,       Licences
        from    Table2
        union all
        select  Package
        ,       Licences
        from    Table3
        ) as SubQueryAlias
group by
        Package
于 2012-08-06T09:27:19.793 に答える