2015-06-15 78 views
0

我有兩個查詢。都返回sql組合兩個子查詢並總計總計

select sum (Amount) as 'Less then 30 days', [Fluids Management$Cust_ Ledger Entry].[Customer No_] 
FROM [Fluids Management$Detailed Cust_ Ledg_ Entry] 
group by [Fluids Management$Cust_ Ledger Entry].[Customer No_] 


select sum ([Debit Amount]) as 'Less then 30 days', [Fluids Management$Cust_ Ledger Entry].[Customer No_] 
FROM [Fluids Management$Detailed Cust_ Ledg_ Entry] 
    group by [Fluids Management$Cust_ Ledger Entry].[Customer No_] 

都有更深入的標準,我只是沒有包括它。無論如何,我想採取第一個查詢,並檢查客戶不存在第二個查詢。如果是這樣,則將該金額的總和加到借方金額上。如果第二個查詢中沒有出現該id,則只需返回第一個查詢中的總和即可。其全部由顧客編號。請幫助

回答

0

的eaiset方式可能會在一個內聯UNION查詢SUM

SELECT SUM (AMOUNT), [Customer No_] 
FROM 

(
select Amount 
      [Fluids Management$Cust_ Ledger Entry].[Customer No_] 
FROM 
     [Fluids Management$Detailed Cust_ Ledg_ Entry] 
UNION ALL 
select [Debit Amount] as 'Less then 30 days', 
     [Fluids Management$Cust_ Ledger Entry].[Customer No_] 
FROM [Fluids Management$Detailed Cust_ Ledg_ Entry] 
) 

GROUP BY [Customer No_] 

您沒有指定的數據庫,所以你可能需要別名才能線視圖,它的工作

+0

我不認爲這會工作。因爲我需要在每個單獨的查詢中進行分組,而不是總和。然後將每個分組的金額添加到與客戶編號相匹配的借方金額分組中。也可以選擇其中兩列,而不進行分組..這甚至不起作用 – Sirus

+0

@Sirus我看到的唯一問題是如果第二個查詢包括不在第一個的客戶。但是,如果您確實想要描述您需要指定數據庫,因爲語法不同 –

+0

第一個查詢將返回每個客戶的金額總和。所以 1000 | C00033 2323 | C00034 第二個查詢將返回每個客戶的借方金額no。所以 1000 | C0033 但可能沒有2323 | C00034 所以,我會然後就像返回 2323 | C00034 2000 | C00033 有在同一張表,相同的數據庫等 – Sirus

0

放入派生表和LEFT兩個查詢加入他們的行列:

SELECT a.[Customer No_], a.'Less then 30 days' + COALESCE(b.'Less then 30 days', 0) 
FROM 
(
    SELECT SUM (Amount) AS 'Less then 30 days', [Fluids Management$Cust_ Ledger Entry].[Customer No_] 
    FROM [Fluids Management$Detailed Cust_ Ledg_ Entry] 
    GROUP BY [Fluids Management$Cust_ Ledger Entry].[Customer No_] 
) AS a 
LEFT JOIN 
(
    SELECT SUM ([Debit Amount]) AS 'Less then 30 days', [Fluids Management$Cust_ Ledger Entry].[Customer No_] 
    FROM [Fluids Management$Detailed Cust_ Ledg_ Entry] 
    GROUP BY [Fluids Management$Cust_ Ledger Entry].[Customer No_] 
) AS b 
ON a.[Customer No_] = b.[Customer No_] 

但是當你訪問同一個表兩次您可能能夠使用SUM(CASE)將其更改爲單查詢