【问题标题】:Merge row values from separate tables into one column. [SQL]将不同表中的行值合并到一列中。 [SQL]
【发布时间】:2012-08-06 09:24:06
【问题描述】:

嗨,我刚刚学习 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

如果有人可以让我知道如何做到这一点,如果这样的事情是可能的,请告诉我。

【问题讨论】:

    标签: sql sql-server sql-server-2012


    【解决方案1】:

    这是您需要研究的UNION ALL 子句和GROUP BY 语句。

    解决方案的要点是

    • 使用UNION ALL 组合所有表中的所有行
    • 将结果放入子选择中
    • 使用GROUP BYSUM 聚合函数计算子选择结果的总许可数

    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
    

    【讨论】:

      【解决方案2】:

      试试这个:

      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
      

      【讨论】:

      • 非常感谢,现在它已经摆在我面前了。
      【解决方案3】:

      您可以使用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
      

      【讨论】:

        猜你喜欢
        • 2013-07-18
        • 2022-01-21
        • 2018-07-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多