如何解决SQL查询-如何将不同条件Where子句?应用于特定的聚合列
我有一张表格(以下为简化示例),其中包括测试,每次测试的TESTPRICE和TESTSTATUS。我希望能够运行一个查询,该查询将产生两个聚合列,一个列用于每个测试组的未决收入,一个列在每个测试组的开始收入。
通过执行以下操作,我可以轻松生成两个单独的结果表:
SELECT
Test,SUM(TESTPRICE) AS 'PendingRev'
FROM
REQUEST
WHERE
TESTSTATUS = 'P'
GROUP BY
TEST
ORDER BY
TEST
SELECT
Test,SUM(TESTPRICE) AS 'StartedRev'
FROM
REQUEST
WHERE
TESTSTATUS = 'S'
GROUP BY
TEST
ORDER BY
TEST
这将产生两个类似的输出结果:
但是,我希望使用单个输出结果表,如下所示:
任何人都可以在这里向我指出正确的方向,为我可以阅读的技术提供建议-我尝试了几种不同的方法(子查询等),但是我似乎得到的最接近的总和是在所有行中都给出了TESTSTATUS,或者有错误
感谢您的帮助
解决方法
使用条件聚合,在大多数数据库中,条件聚合如下:
SELECT Test,SUM(CASE WHEN TESTSTATUS = 'P' THEN TESTPRICE END) AS PendingRev,SUM(CASE WHEN TESTSTATUS = 'S' THEN TESTPRICE END) AS StartedRev
FROM REQUEST
GROUP BY TEST
ORDER BY TEST;
,
您可以使用Pivot达到相同的结果:
SELECT * FROM TABLE1
PIVOT (SUM(TESTPRICE)
FOR TESTSTATUS IN ('P' as PendingRev,'S' as StartedRev ));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。