0

作为我在 SP 中加入的一部分输出如下:

Col1 col2
A     1
B     1
C     2
C     1

我有另一个表,其中包含Col1 (A,B,C,D,E,F)[The values are not known 中的所有可能值,作为最佳实践,我不想对这些值进行硬编码。]

SQL中的预期输出如下所示

Col1   1            2
A     Yes        No/Null
B     Yes        No
C     Yes        Yes
D      No         No 
E      No         No
F      No         No

感谢我在 SQL 方面经验相对较少的帮助,如果有人能帮助我了解如何实现这一目标,我将不胜感激。

4

2 回答 2

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;
于 2018-12-27T09:09:59.113 回答
0

如果您可以使用“1/0”而不是“YES/NO”,则可以使用以下SQL 数据透视查询

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 
于 2018-12-27T09:34:57.480 回答