一尘不染

汇总同一SQL表上的两个条件

sql

给定一个SQL表

Transactions
  ID            INT
  COMPANY_ID    INT
  STATUS        INT

在哪里STATUS IN (0,1)表示免费交易并STATUS IN (2,3)表示应付款交易,每笔简单(我希望)的ANSI
SQL语句将向我显示可COMPANY_ID交易交易,非可交易交易的数量及其比率?

如果没有具体说明,朝正确方向发展的概念产品也可以。我的第一个尝试是使用WHERE两个状态组的子句在表上进行自我联接,但是我一直坚持如何获取代表每个不同计数的列,以便可以计算比率。


阅读 147

收藏
2021-05-23

共1个答案

一尘不染

这是一个开始,我认为这是正确的。。。唯一剩下的就是增加比率。

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
2021-05-23