[英]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.