2012-08-06 61 views
3

嗨,我只是學習SQL,我試圖從多個表中檢索一些數據,無法讓它顯示我想怎麼樣,所以我只是想知道這是否可能,如果可以的話有人提出一個方法,見下圖:將來自不同表格的行值合併到一列中。 [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 

如果有人能讓我知道如何做到這一點,如果這樣的事情甚至可能,請讓我知道。

回答

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 
+0

大加讚賞,似乎是顯而易見的,現在它被解僱在我面前。 – Watson 2012-08-06 10:46:04

2

這是你需要研究的UNION ALL條款和GROUP BY聲明。

溶液的要點是使用UNION ALL

  • 把結果放到一個子選擇
  • 通過使用GROUP BYSUM聚集計算總許可證

    • 組合來自所有表中的所有行對子查詢結果的功能

    SQL Statement

    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 
    
  • 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 
    
    相關問題