2015-09-22 110 views
0

我有兩張表,其中有發票數據,如日期發票號。供應商等。第一個表與另一個不同,這就是爲什麼他們創建爲分離表。但是這兩個表具有相同的列,我想要UNION和GROUP BY。按聯盟分組查詢

當我用一張桌子做東西時一切正常,但是在嘗試使用UNION時,如果按客戶和國家進行分組,我會得到相互分離的數據組,例如,我得到兩個國家(BE和以下也是BE)相同客戶。結果應該只給我提供總計VATamount的一個國家。

我在網上閱讀了一些文章,但它並沒有幫助我解決我的問題。到目前爲止,我的語法如下:

SELECT [Faktury - od nas].customerKey, [Faktury - od nas].InvoiceCountry, Sum([Faktury - od nas].VATamount) AS SumaOfVATamount 
FROM [Faktury - od nas] 
GROUP BY [Faktury - od nas].customerKey, [Faktury - od nas].InvoiceCountry 
UNION 
SELECT [Faktury - od nich].customerKey, [Faktury - od nich].InvoiceCountry, Sum([Faktury - od nich].VATamount) AS SumaOfVATamount 
FROM [Faktury - od nich] 
GROUP BY [Faktury - od nich].customerKey, [Faktury - od nich].InvoiceCountry 

到目前爲止輸出:

01-72 ---這樣--- 125.00
01-72 ---這樣--- 180, 07
11-54 --- DE --- 206,34
11-54 --- DE --- 100,00
23-65 --- FR --- 23,00
23- 65 --- FR --- 100,76

所需輸出T:

01-72 ---這樣--- 305,07
11-54 --- DE --- 306,34
23-65 --- FR --- 123,76

編輯: 我在查詢中做了一些更改,發現它按預期的方式停止了分組。你能幫我嗎?

SELECT [E100 Key], [Nazwa Klienta], [Kraj], [Okres], Sum(Format(Round([Kwota1],2),'Standard')) AS [Kwota], [Waluta], [Status], [Rozliczenie] 

FROM(

SELECT [Faktury - od nas].customerKey AS [E100 Key], [Faktury - od nas].CustomerName AS [Nazwa Klienta], [Faktury - od nas].InvoiceCountry AS Kraj, [Faktury - od nas].Okres AS Okres, Sum([Faktury - od nas].VATamount) AS Kwota1, [Faktury - od nas].Currency AS Waluta, [Faktury - od nas].Status AS Status, [Faktury - od nas].[Transtax invoice No] AS Rozliczenie 
FROM [Faktury - od nas] 
GROUP BY [Faktury - od nas].customerKey, [Faktury - od nas].CustomerName, [Faktury - od nas].InvoiceCountry, [Faktury - od nas].Okres, [Faktury - od nas].Currency, [Faktury - od nas].Status, [Faktury - od nas].[Transtax invoice No] 
HAVING ((([Faktury - od nas].Okres) Is Not Null)) 

UNION 

SELECT [Faktury - od nich].customerKey AS [E100 Key], [Faktury - od nich].CustomerName AS [Nazwa Klienta], [Faktury - od nich].InvoiceCountry AS Kraj, [Faktury - od nich].Okres AS Okres, Sum([Faktury - od nich].VATamount) AS Kwota1, [Faktury - od nich].Currency AS Waluta, [Faktury - od nich].Status AS Status, [Faktury - od nich].[Transtax invoice No] AS Rozliczenie 
FROM [Faktury - od nich] 
GROUP BY [Faktury - od nich].customerKey, [Faktury - od nich].CustomerName, [Faktury - od nich].InvoiceCountry, [Faktury - od nich].Okres, [Faktury - od nich].Currency, [Faktury - od nich].Status, [Faktury - od nich].[Transtax invoice No] 
HAVING ((([Faktury - od nich].Okres) Is Not Null)) 

)GROUP BY [E100 Key], [Nazwa Klienta], [Kraj], [Okres], [Waluta], [Status], [Rozliczenie]; 
+1

查看最高評級回答:http://stackoverflow.com/questions/8572821/group-by-with-union-mysql-select-query?rq=1。應該也適用於ACCESS – asdev

+0

實際上發現這個:http://stackoverflow.com/questions/26606949/group-by-with-union昨天我試了一下,它沒有工作。但再次嘗試並且工作得很好。對不起,打擾了。 – lowak

+0

@asdev請看看閱讀編輯。 – lowak

回答

0

問題解決了。
有2個問題:

  1. 語法錯誤。其他問題有助於解決這個問題:Group by with UNION
  2. 其中一列中的數據不同。第一個表格包含零長度字符串和第1個空值。一目瞭然看起來相同,但運行查詢顯示差異。

非常感謝asdev誰保持聯繫我的問題,並提供策略,以通過。