假设下表:
表A:
ID GroupName SomeValue
1 C 1
2 C 1
2 B 1
2 A 1
我需要构建一个选择以下结果的查询:
ID GroupName SomeValue
1 C 1
1 B 0
1 A 0
2 C 1
2 B 1
2 A 1
GroupName 实际上是从 TableA 列的 CASE 表达式派生的,只能取 3 个值:A、B、C。
分析函数是要走的路吗?
编辑
抱歉,没有提及,但 ID 可能包含多列。考虑这个例子:
ID1 ID2 GroupName SomeValue
1 1 C 1
1 2 C 1
2 2 C 1
2 2 B 1
2 2 A 1
我需要SomeValue
为每个唯一的组合 ID1+ID2 填充 0。所以结果应该是这样的:
ID1 ID2 GroupName SomeValue
1 1 C 1
1 1 B 0
1 1 A 0
1 2 C 1
1 2 B 0
1 2 A 0
2 2 C 1
2 2 B 1
2 2 A 1
EDIT2
似乎是@Laurence 提出的解决方案,即使对于多列“ID”也应该有效。我无法重写@Nicholas Krasnov 提出的查询以符合此要求。但是有人可以比较这些解决方案的性能吗?工作会analytic function
比“交叉连接+左外连接”更快吗?