给定一个SQL表
Transactions
ID INT
COMPANY_ID INT
STATUS INT
其中STATUS IN (0,1)
表示空闲事务,STATUS IN (2,3)
表示可计费事务,简单(我希望)ANSI SQL语句将根据COMPANY_ID
向我显示可计费事务的数量,不可结算交易及其比率?
如果不是特定的陈述,正确方向的概念刺激是好的。我的第一次尝试是使用两个状态组的WHERE
子句自行加入表中,但我仍然坚持如何获得一个代表每个不同计数的列,以便我可以计算比率。
这在概念上与summarize-aggregated-data非常相似,但我不确定如何将这个问题扩展到这个问题。
答案 0 :(得分:5)
这是一个开始,我认为这是沿着正确的方向......唯一剩下的就是增加比率。
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