2014-09-19 86 views
1

我想要顯示sql結果集中每個組後面的數據總和。顯示每個組的新行中分組列的總和

我有兩個表1組

------------------------------------- 
Group  Name  Sale 
------------------------------------- 
G1   ABC1  10 
..................................... 
G1   ABC2  20 
..................................... 
G1   ABC3  40 

和第2組

------------------------------------- 
Group  Name  Sale 
..................................... 
G2   XYZ1  34 
..................................... 
G2   XYZ2  14 
..................................... 
G2   XYZ3  44 

我想告訴像下面的數據:

------------------------------------- 
Group  Name  Sale 
------------------------------------- 
G1   ABC1  10 
..................................... 
G2   XYZ1  34 
..................................... 
TOTAL  TOTAL  44    -- Calculated Row 
..................................... 
G1   ABC2  20 
..................................... 
G2   XYZ2  14 
..................................... 
TOTAL  TOTAL  34    -- Calculated Row 
..................................... 
G1   ABC3  40 
..................................... 
G2   XYZ3  44 
..................................... 
TOTAL  TOTAL  84    -- Calculated Row 
..................................... 

這可能嗎?

+0

您需要知道第1組中的行與第2組中的行匹配的方式。然後你可以做一些'聯合'來達到你的結果。可能會導致一些醜陋的SQL。 – MicSim 2014-09-19 15:15:05

回答

1

我在這裏做了一些假設。即「名稱」總是4個字符,如果它以「1」結尾,則它與另一個表中的名稱也以「1」結尾相關。您可以在派生的UnionTotal表的最後一個union union SELECT語句的LEFT OUTER JOIN中看到這一點。

SELECT 
    * 
FROM 
    (
     SELECT 
      Substring(name, 4, 1) as sortOrder, 
      Group, 
      Name, 
      Sale 
     FROM Group1 
     UNION ALL 
     SELECT 
      Substring(Name, 4, 1) as sortOrder, 
      Group, 
      Name, 
      Sale 
     FROM Group2 
     UNION ALL 
     SELECT 
      Substring(G1.Name, 4, 1) as sortOrder, 
      "Total" as Group, 
      "Total" as Name, 
      G1.Sale + G2.Sale as Sale 
     FROM 
      Group1 as G1 
      LEFT OUTER JOIN Group2 as G2 ON 
       Substring(G1.Name, 4, 1) = Substring(G2.Name, 4, 1) 

    ) as unionTotal 
ORDER BY sortOrder, Group;