SQL从一列

时间:2017-03-22 01:35:34

标签: mysql

我有一个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的新手,对不起,如果查询有一堆错误,但不确定是否可以使用查询完成或需要使用存储过程?

2 个答案:

答案 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的汇总数量值。

在这里演示:

Rextester

答案 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

相关问题