2013-05-22 58 views
1

我在數據庫中有2個表,基本上是當前銷售額(dbo_SalesItem)和歷史銷售額(dbo_SalesItemHistory)。我有一個查詢來從每個表中獲得唯一供應商名稱的數量,但我怎樣才能將這些數據加入到一起以從兩個查詢中獲得單個總數?MS Access:我如何用這兩個查詢創建一個聯合並獲得全局計數?

表中的字段是相同的。

SELECT dbo_SalesItem.Vendor AS [Vendor ID], dbo_Vendor.Vendor_Name AS [Vendor Name], Count(*) AS [Count] 
FROM (dbo_SalesDoc INNER JOIN dbo_SalesItem ON dbo_SalesDoc.Sales_Doc_Num = dbo_SalesItem.Sales_Doc_Num) INNER JOIN dbo_Vendor ON dbo_SalesItem.Vendor = dbo_Vendor.Vendor_ID 
WHERE (((dbo_SalesDoc.Hold_Code)="ITEMLINK" Or (dbo_SalesDoc.Hold_Code)="TKTLINK") AND ((dbo_SalesDoc.Sales_Doc_Num) Like "ORD*")) 
GROUP BY dbo_SalesItem.Vendor, dbo_Vendor.Vendor_Name, dbo_SalesDoc.Last_Update_On 
HAVING (((dbo_SalesDoc.Last_Update_On)>=DateAdd("d",-90,Date()))) 
ORDER BY Count(*) DESC; 

SELECT dbo_SalesItemHistory.Vendor AS [Vendor ID], dbo_Vendor.Vendor_Name AS [Vendor Name], Count(*) AS [Count] 
FROM (dbo_SalesDoc INNER JOIN dbo_SalesItemHistory ON dbo_SalesDoc.Sales_Doc_Num = dbo_SalesItemHistory.Sales_Doc_Num) INNER JOIN dbo_Vendor ON dbo_SalesItemHistory.Vendor = dbo_Vendor.Vendor_ID 
WHERE (((dbo_SalesDoc.Hold_Code)="ITEMLINK" Or (dbo_SalesDoc.Hold_Code)="TKTLINK") AND ((dbo_SalesDoc.Sales_Doc_Num) Like "ORD*")) 
GROUP BY dbo_SalesItemHistory.Vendor, dbo_Vendor.Vendor_Name, dbo_SalesDoc.Last_Update_On 
HAVING (((dbo_SalesDoc.Last_Update_On)>=DateAdd("d",-90,Date()))) 
ORDER BY Count(*) DESC; 

從查詢的結果是這樣的:

Vendor ID Vendor Name Count 
12345  Big Vendor  1200 
23453  Big Vendor  900 
43498  Other Vendor 600 
98342  This Vendor  500 
08943  Small Vendor 100 

謝謝!

回答

2

使用子查詢UNION ALL您的2個現有查詢。儘管放棄了它們的ORDER BY條款。然後,父查詢可以是總計每個供應商的計數的GROUP BY

SELECT 
    sub.[Vendor ID], 
    sub.[Vendor Name], 
    Sum(sub.Count) As SumOfCount 
FROM 
    (
     SELECT dbo_SalesItem.Vendor AS [Vendor ID], dbo_Vendor.Vendor_Name AS [Vendor Name], Count(*) AS [Count] 
     FROM (dbo_SalesDoc INNER JOIN dbo_SalesItem ON dbo_SalesDoc.Sales_Doc_Num = dbo_SalesItem.Sales_Doc_Num) INNER JOIN dbo_Vendor ON dbo_SalesItem.Vendor = dbo_Vendor.Vendor_ID 
     WHERE (((dbo_SalesDoc.Hold_Code)="ITEMLINK" Or (dbo_SalesDoc.Hold_Code)="TKTLINK") AND ((dbo_SalesDoc.Sales_Doc_Num) Like "ORD*")) 
     GROUP BY dbo_SalesItem.Vendor, dbo_Vendor.Vendor_Name, dbo_SalesDoc.Last_Update_On 
     HAVING (((dbo_SalesDoc.Last_Update_On)>=DateAdd("d",-90,Date()))) 
     UNION ALL 
     SELECT dbo_SalesItemHistory.Vendor AS [Vendor ID], dbo_Vendor.Vendor_Name AS [Vendor Name], Count(*) AS [Count] 
     FROM (dbo_SalesDoc INNER JOIN dbo_SalesItemHistory ON dbo_SalesDoc.Sales_Doc_Num = dbo_SalesItemHistory.Sales_Doc_Num) INNER JOIN dbo_Vendor ON dbo_SalesItemHistory.Vendor = dbo_Vendor.Vendor_ID 
     WHERE (((dbo_SalesDoc.Hold_Code)="ITEMLINK" Or (dbo_SalesDoc.Hold_Code)="TKTLINK") AND ((dbo_SalesDoc.Sales_Doc_Num) Like "ORD*")) 
     GROUP BY dbo_SalesItemHistory.Vendor, dbo_Vendor.Vendor_Name, dbo_SalesDoc.Last_Update_On 
     HAVING (((dbo_SalesDoc.Last_Update_On)>=DateAdd("d",-90,Date()))) 
    ) AS sub 
GROUP BY 
    sub.[Vendor ID], 
    sub.[Vendor Name] 
ORDER BY 3 DESC; 
+0

謝謝漢斯!我認爲那樣做了! –