作为我在SP中的联接输出的一部分,就像:
Col1 col2
A 1
B 1
C 2
C 1
我还有另一个表,其中包含Col1 (A,B,C,D,E,F)
中的所有可能值[这些值未知,作为最佳实践,我不想对这些值进行硬编码。 ]
SQL的预期输出如下所示
Col1 1 2
A Yes No/Null
B Yes No
C Yes Yes
D No No
E No No
F No No
感谢我在SQL方面经验相对较少的帮助,如果有人可以帮助我了解如何实现这一目标,我将不胜感激。
答案 0 :(得分:3)
您可以使用条件聚合进行JOIN
:
with cte as (
< query >
)
select c.col1,
max(case when t1.col2 = 1 then 'Yes' end),
max(case when t1.col2 = 2 then 'Yes' end)
from cte c LEFT JOIN
table t1
on t1.col1 = c.col1
group by c.col1;
答案 1 :(得分:0)
如果可以使用“ 1/0”代替“是/否”,则可以使用以下SQL pivot query
select
*
from (
select
letters.col1, mydata.col2
from (
select 'A' as col1 union all select 'B' union all select 'C' union all select 'D' union all select 'E' union all select 'F'
) letters
left join (
select 'A' as col1, 1 as col2 union all
select 'B' as col1, 1 as col2 union all
select 'C' as col1, 2 as col2 union all
select 'C' as col1, 1 as col2
) mydata
on mydata.col1 = letters.col1
) data
PIVOT (
count( col2 )
FOR col2
IN (
[1],[2]
)
) PivotTable