我有一个txntype和amount的表:
Table A
Rec txntype amount
1 6 500
2 7 400
3 6 500
4 7 600
我需要创建一个查询,我可以根据txn类型获得金额总和:
Output Query
Rec AmountA AmountB
1 1000 1000
其中AmountA是txntype = 6而AmountB是txntype = 7.可以像这样使用sql select语句:
select amount as a, amount as b CASE amount
WHEN
txntype = 6 THEN SUM(amount) to a
WHEN
txntype = 7 THEN SUM(amount) to b
END
from Table
group by amount;
我是sql的新手,对不起,如果查询有一堆错误,但不确定是否可以使用查询完成或需要使用存储过程?
答案 0 :(得分:0)
我认为您可以对amount
列进行条件聚合,具体取决于txntype
的值。
SELECT Rec,
SUM(CASE WHEN txntype = 6 THEN amount ELSE 0 END) AS AmountA,
SUM(CASE WHEN txntype = 7 THEN amount ELSE 0 END) AS AmountB
FROM PayrollTxn
请注意,在这种情况下您不需要使用GROUP BY
,因为上面CASE
函数中的SUM()
表达式会聚合txttype
的汇总数量值。
在这里演示:
答案 1 :(得分:0)
试试这个可以解决你的问题:
SELECT 1 AS Rec,
SUM(A.Amount) as AmmountA,
(SELECT SUM(Amount) FROM PayrollTxn WHERE txntype=7) as AmmountB
FROM PayrollTxn AS A
WHERE txntype = 6
GROUP BY A.Amount
请参阅此处演示:MySql select sum query