给定一个SQL表
Transactions ID INT COMPANY_ID INT STATUS INT
在哪里STATUS IN (0,1)表示免费交易并STATUS IN (2,3)表示应付款交易,每笔简单(我希望)的ANSI SQL语句将向我显示可COMPANY_ID交易交易,非可交易交易的数量及其比率?
STATUS IN (0,1)
STATUS IN (2,3)
COMPANY_ID
如果没有具体说明,朝正确方向发展的概念产品也可以。我的第一个尝试是使用WHERE两个状态组的子句在表上进行自我联接,但是我一直坚持如何获取代表每个不同计数的列,以便可以计算比率。
WHERE
这是一个开始,我认为这是正确的。。。唯一剩下的就是增加比率。
SELECT COMPANY_ID, NON_BILLABLE = SUM(CASE STATUS WHEN IN (0, 1) THEN 1 ELSE 0 END), BILLABLE = SUM(CASE STATUS WHEN IN (2, 3) THEN 1 ELSE 0 END) FROM TRANSACTIONS GROUP BY COMPANY_ID
编辑:符合标准。
SELECT COMPANY_ID, SUM(CASE STATUS WHEN IN (0, 1) THEN 1 ELSE 0 END) AS NON_BILLABLE, SUM(CASE STATUS WHEN IN (2, 3) THEN 1 ELSE 0 END) AS BILLABLE FROM TRANSACTIONS GROUP BY COMPANY_ID