我相信可能有一种简单的方法可以用枢轴或分区来解决这些问题,但我似乎找不到合适的解决方案。我有一个关于问题 1 的解决方案,通过使用一长串 select sum()s 和一个很长的问题 2 解决方案,其中我只是从表 B 中选择 count(*) 其中 id = id 从表 A 中多次(select) 块,但如果我有大量的 ID,这两个解决方案都等于很长的 SQL,这会变得非常乏味,而且我确信有更好的方法让我躲避。
我真的很喜欢允许我包含大量多个 ID 的解决方案,或者为解决方案提供一个 ID 表以供评估。
问题 1:
Table:
------------------
ID DESC YEAR
1 A 2021
1 B 2021
1 C 2021
2 A 2021
2 B 2021
2 C 2021
3 A 2019
3 B 2019
我想按年份计算每个 DESC 的 ID 数。
Expected Result:
------------------
Year CountA CountB CountC
2019 1 1 0
2021 2 2 2
问题 2:
Table A:
------------------
ID DESC
1 A
2 B
3 C
Table B:
------------------
SET ID
10 1
10 1
12 1
13 2
14 3
我想看看 (1) 在表 B 的每个 SET 中可以找到表 A 中的每个 ID 有多少个,以及 (2) 在表 B 的每个 SET 中可以找到表 A 中的每个 ID 有多少个,以及不在表 B 的任何其他 SET 中(唯一匹配)。
Expected Result 1:
------------------
ID Count10 Count12 Count13 Count14
1 2 1 0 0
2 0 0 1 0
3 0 0 0 1
Expected Result 2:
------------------
ID UniqueCount10 UniqueCount12 UniqueCount13 UniqueCount14
1 0 0 0 0
2 0 0 1 0
3 0 0 0 1
感谢您的任何帮助。