繁体   English   中英

T-SQL - 对按 ID 分组的行进行子查询以创建汇总表

[英]T-SQL - subqueries on rows grouped by ID to create a summary table

我有一个带有 id 和两个 int 字段“A”和“B”的表“MyTable”:

MyTable
+-------+-----+-----+
|   ID  |  A  |  B  |
+-------+-----+-----+
|    99 |  0  |  1  |
|    99 |  0  |  1  |
|    99 |  0  |  0  |
|    99 |  1  |  1  |
|    99 |  0  |  1  |
|   100 |  1  |  0  |
|   100 |  0  |  0  |
|   100 |  0  |  0  |
|   444 |  1  |  0  |
|    88 |  0  |  0  |
|    88 |  0  |  0  |
|    88 |  0  |  1  |
+-------+-----+-----+

我想要一个 T-SQL 查询为每个不同的 id 返回一行,其中包含:

每个不同的 ID
该 ID 是否存在具有“a”非零值的行
该 ID 是否存在具有“b”非零值的行

像这样:

+-------+-----+-----+
|   ID  |  A  |  B  |
+-------+-----+-----+
|    99 |  1  |  1  |
|   100 |  1  |  0  |
|   444 |  1  |  0  |
|    88 |  0  |  1  |
+-------+-----+-----+

我可以按 ID 分组,但我不知道如何在每个组上创建连接或子查询以获得所需的结果。

select id, max(case when A<>0 then 1 else 0 end)A, max(case when B<>0 then 1 else 0 end)B
from mytable 
group by id

或者你可以直接使用,因为你的值是 1 和 0。但是如果值不是那个,请使用第一个查询。

select id, max(A)A, max(B)B
from mytable 
group by id

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM