'Rolling up' 一式三份的记录,嵌套的 case 语句(或循环)

'Rolling up' records in triplicate, nested case statement (or loops)

我有一个包含四列的 table:ID、OUTPUT、NOTE_TEXT、SOURCE

ID 值一式三份,因为我从三个不同的 SOURCE 中提取了日期,并使用了 all(联合不起作用,这很糟糕)。有效地将每条记录复制三次。

我需要将这些一式三份的 ID 值汇总到每个 ID 的一条记录中。

下面是 NOTE_TEXT 值的四种数据变体的屏幕截图,每个 ID 一式三份:

Table

下面是查询的示例输出:

Output

从 ID = 00793 可以明显看出,以下 case 语句无效。这是为什么?还有,是否可以修改它来工作,或者我应该构建一系列循环,还是有更优雅的解决方案?

最终目标是将其保存为存储过程并调用到 SSIS 项目中。感谢任何见解或建议。

select * from 
(
select 
ID
,OUTPUT
,case
    when NOTE_TEXT = '' then case
                                 when [SOURCE] = 'G1' and NOTE_TEXT != '' then NOTE_TEXT
                                 when [SOURCE] = 'G2' and NOTE_TEXT != '' then NOTE_TEXT
                                 when [SOURCE] = 'ENG' and NOTE_TEXT != '' then NOTE_TEXT
                                 else ''
                                 end
    else NOTE_TEXT
    end as NOTE_TEXT
from Table
) as temp
group by ID, OUTPUT, NOTE_TEXT

编辑:我可能不清楚,这是我想构建到查询中的逻辑,使用现有的 case 语句或任何其他方式。

根据@Habo 的评论,使用 case 语句是行不通的。相反,这有效。

select distinct(ID) AS ID
,'' AS OUTPUT_TYPE
,       (
       select top 1
           NOTE_TEXT
       from [table] AS t
       where NOTE_TEXT is not null
             and NOTE_TEXT != ''
             and t.SUPPLIER_ID = s.SUPPLIER_ID
   ) as NOTE_TEXT
from [table] as s