2012-05-18 101 views
1

我在兩個結果集上有一個UNION ALL。這導致如下所示。SQL查詢組

TOTALSTABLE

FAMILYNAME-----FIRSTNAME------NUMBER------TOTAL 
Brown   Dave   1234  500.00 
Brown   Dave   1234  300.00 
Smith   Frank   4321  123.00 
Smith   Frank   4321  456.00 

我運行下面的查詢......

SELECT TOTALSTABLE.FAMILYNAME, 
    TOTALSTABLE.FIRSTNAME, 
    TOTALSTABLE.NUMBER, 
    SUM(TOTALSTABLE.TOTAL) COMBINEDTOTAL 
FROM TOTALSTABLE 
GROUP BY TOTALSTABLE.FAMILYNAME, 
    TOTALSTABLE.FIRSTNAME, 
    TOTALSTABLE.NUMBER 

這給了我像...

FAMILYNAME-----FIRSTNAME------NUMBER------COMBINEDTOTAL 
Brown   Dave   1234  800.00 
Smith   Frank   4321  579.00 

這正是我需要的。然而,我需要添加一個額外的列,這是空的結果我試圖做一個聯合所有。

實施例:

T1

FAMILYNAME-----FIRSTNAME------NUMBER------TOTAL-------DATE 
Brown   Dave   1234  500.00  01/01/2001 
Smith   Frank   4321  123.00  01/01/2001 

T2

FAMILYNAME-----FIRSTNAME------NUMBER------TOTAL-------DATE 
Brown   Dave   1234  300.00  NULL 
Smith   Frank   4321  456.00  NULL 

聯合(UNION ALL)

FAMILYNAME-----FIRSTNAME------NUMBER------TOTAL-------DATE 
Brown   Dave   1234  500.00  01/01/2001 
Brown   Dave   1234  300.00  NULL 
Smith   Frank   4321  123.00  01/01/2001 
Smith   Frank   4321  456.00  NULL 

我需要得到合併的總像在第一實施例,使用日期th在isnt null。

預期結果的示例。

FAMILYNAME-----FIRSTNAME------NUMBER------COMBINEDTOTAL----DATE 
Brown   Dave   1234  800.00   01/01/2001 
Smith   Frank   4321  579.00   01/01/2001 

有誰能告訴我我需要做什麼嗎?乾杯。

+0

其中的日期是從哪裏來的? –

回答

1

這聽起來像你只是想

SELECT familyName, 
     firstName, 
     number, 
     SUM(total) combinedTotal, 
     MAX(date) date 
    FROM (<<union all query>>) 
GROUP BY familyName, 
      firstName, 
      number 
-1

,你的狀態,你可以試着遵循代碼

SELECT * FROM 
(SELECT c1, c2, c3 FROM T1 
UNION ALL 
SELECT c1, c2, c3 FROM T2 
) T 
WHERE T.c3 IS NOT NULL 
GROUP BY T.c1, T.c2, T.c3 
+0

誰投下來,爲什麼? –