首页 > 解决方案 > 使用 Group By 根据 2 列计算行数

问题描述

我有一个 3 列的数据库表

RecordID    Deleted CardHolderID
1963        1       9
4601        1       9
6996        0       9
1532        1      11
1529        0      20

我想要一个 sql 查询来输出按 CardHolderID 分组的 Deleted 列的行总和。

但是下面的查询为 CardHolderID 输出 2 列

select c.CardHolderID, c.Deleted, COUNT(*) as Sum 
from Card c 
group by c.Deleted, c.CardHolderID

CardHolderID    Deleted Sum
9               0       1
9               1       2
20              0       1
11              1       1

我想将 2 列包括为Deleted0(Deleted 列等于 0 的行数)Deleted1(Deleted 列等于 1 的行数)

CardHolderID    Deleted0 Deleted1
9               1       2
20              1       0
11              1       1

对于这样的结果,SQL 查询应该如何?

亲切的问候

标签: sql

解决方案


GROUP BYCardHolderID 单独。

用于SUM(Deleted)计算 1。

用于SUM(1-deleted)计算 0。

select c.CardHolderID, sum(1-c.deleted) deleted0, sum(c.Deleted) deleted1
from Card c 
group by c.CardHolderID

推荐阅读