获取同一列的总值多行和总共两个不同的行(mysql查询)

时间:2016-11-22 08:45:52

标签: mysql

我有一张桌子"记录" [记录] [1]

select typeofservice, 
       Coalesce(sum(incomecost,expensecost),0) 'incomecost,expensecost' 
from   records 
where  dateoftrans = '2016-11-22' 
group by typeofservice with rollup;

我希望能够在第二张图片上显示结果,这是我的查询...所有这些交易都发生在一天。请帮忙

30000th prime

2 个答案:

答案 0 :(得分:0)

以下查询假设,对于给定类型的服务,您希望在收入成本总和超过费用成本之和时报告收入,反之亦然。在每种情况下,收入和费用之间的差异都会在相应的列中报告,并在备用列中报告NULL

SELECT typeofservice,
       CASE WHEN SUM(incomecost) - SUM(expensecost) > 0
            THEN SUM(incomecost) - SUM(expensecost)
            ELSE NULL END AS incomecost,
       CASE WHEN SUM(expensecost) - SUM(incomecost) > 0
            THEN SUM(expensecost) - SUM(incomecost)
            ELSE NULL END AS expensecost
FROM records
WHERE dateoftrans = '2016-11-22'
GROUP BY typeofservice
WITH ROLLUP

答案 1 :(得分:0)

如果仅针对第二张图片的结果,您可以尝试这样sum(incomecost)sum(expensecost)

SELECT
    typeofservice,
    Coalesce(SUM(incomecost), 0) AS incomecost,
    Coalesce(SUM(expensecost), 0) AS expensecost
FROM records
GROUP BY typeofservice
WITH ROLLUP