我非常擅长SQL,但这超出了我的范围。我正在查看存储百货商店的交易记录的数据库表。有些交易是购买,有些是退货。我正在尝试编写一个查询,按帐户对数据进行分组,并显示帐户持有人已经进行了多少次购买以及帐户持有人已经进行了多少次退货。
以下是Transaction_Table中数据的简化视图:
Account_Id Transaction_Code Transaction_Amt
---------- ---------------- ---------------
123 P 20.00
123 P 30.00
123 R 10.00
因此,在英语中,Account_Id 123进行了两次购买(Transaction_Code为“P”的记录),总价值为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 :(得分:0)
这是一种透视查询,您需要SUM()
根据Transaction_code
的值。
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