2013-07-25 60 views
1

我很擅長SQL,但這超出了我的想象。我正在查看存儲百貨商店交易記錄的數據庫表。一些交易是購買,一些是回報。我正在嘗試編寫一個查詢,以按帳戶對數據進行分組,並顯示帳戶持有人進行了多少次購買以及帳戶持有人已作出多少回報。如何基於數學計算對SQL中的數據進行分組?

這裏是在Transaction_Table數據的簡化視圖:

Account_Id Transaction_Code Transaction_Amt 
----------  ---------------- --------------- 
123    P     20.00 
123    P     30.00 
123    R     10.00 

所以,在英國,ACCOUNT_ID 123作出兩次購買(具有「P」一個Transaction_Code的記錄),總價值$ 50 ,並做了一次返回(Transaction_Code爲「R」的記錄),價值10美元。

我寫了下面的SQL查詢:

SELECT Account_Id, SUM(Transaction_Amt) AS Total_Spent 
FROM Transaction_Table 
WHERE Transaction_Code IN (‘P’, ‘R’) 
GROUP BY Account_Id 
ORDER BY Total_Purchased 

當我運行查詢,我得到這個:

Account_Id  Total_Spent 
123   60.00 

不過,我想是這樣的:

Account_Id  Total_Purchased  Total_Returned 
123   50.00    10.00 

這可能嗎?謝謝!!!

回答

0

這是一種數據透視查詢,您需要基於Transaction_code的值SUM()

SELECT 
    Account_Id, 
    /* SUM() conditionally based on the Transaction_Code value */ 
    SUM(CASE WHEN Transaction_Code = 'P' THEN Transaction_Amt ELSE 0 END) AS Total_Purchased, 
    SUM(CASE WHEN Transaction_Code = 'R' THEN Transaction_Amt ELSE 0 END) AS Total_Returned 
FROM 
    Transaction_Table 
GROUP BY Account_Id 
ORDER BY Total_Purchased 

這裏有一個演示:http://sqlfiddle.com/#!2/850b3/1

+0

謝謝你,先生!這與你的小提琴完全一樣!謝謝你,謝謝你,謝謝你!!! –

相關問題