【发布时间】:2018-04-13 10:42:13
【问题描述】:
我需要加入 3 个表,对数据进行计数/求和并对数据进行分组。下面是我的表格的非常简化的版本。
People p
ID
1
2
3
Accounts a
ID | Balance | PeopleFK
1 | 50 | 1
2 | 25 | 2
3 | 15 | 3
Cards c
ID | Status | PeopleFK
1 | Active | 1
2 | Inact | 1
3 | Active | 2
4 | Other | 2
到目前为止我所拥有的:
select sum(a.balance),count(c.*),
case when c.status='Active' then 'Active'
case when c.status IN ('Inactive','Other') then 'Inact'
case when c.status is null then 'No Card' end as 'CardStatus'
from people p
join accounts a on p.id=a.PeopleFK
left join cards c on p.id=c.PeopleFK
group by c.status
所需的结果类似于:
Balance | CardStatus | CardCount
50 | Active | 2
25 | Inactive | 1
0 | NoCard | 1
但我的结果按所有卡片状态分组。我理解为什么会发生这种情况,但我不确定如何在不为每种情况编写单独的查询的情况下解决这个问题。
因此,它们不是将 Inactive 和 Other 组合在一起,而是组合在一起。
我还在玩这个,但有什么建议吗?
【问题讨论】:
-
您的
Accounts表缺少数据。请问可以加进去吗?
标签: sql sql-server tsql