【发布时间】:2021-11-20 13:26:40
【问题描述】:
我有两个表,其中包含一个列 ID 和一个标志。 我想在一行中获取行数,其中 table2.id = some condition; 带着这个要求:
select table1.ID, table1.FLAG, count(1) row_count
from table1,
table2
where table1.ID = 123
and table1.ID = table2.ID
group by table1.ID, table1.FLAG, table2.FLAG
如果 table2.FLAG 有 3 个不同的值(Active、Suspend、Other),那么我有 3 行,问题是如何将这三行组合成这样的: ID、FLAG、Active_Count、Suspend_Count、Other_Count。
【问题讨论】:
-
请使用现代连接语法,而不是 FROM 子句中的逗号分隔表。
-
使用 case 表达式进行条件聚合。并从 GROUP BY 中删除 table2.FLAG。
-
表1中的ID是否唯一?
-
@Del 是的,表 1 有 1 行具有唯一 id,表 2 有更多行 id = table1.id
-
如果您包含一个最小的 SQL 数据集,它可以帮助我们提供更广泛的社区可以访问的有意义的解释,显示您当前的结果以及您期望的结果。