我正在尝试执行复杂的聚合和连接查询来准备数据以导入网站,将多个结果行和列聚合到每个 ID 的一行中。
我快到了,除了我得到很多 NULL 结果,尽管源数据中没有 NULL 值。
源数据:
ID | 值_1 | 价值_2 | 值_3 | 类型 |
---|---|---|---|---|
x1 | 一些文本 | 其他文本 | 更多文字 | A2 |
x1 | 一些文本 | 其他文本 | 更多文字 | B1 |
x1 | 一些文本 | 其他文本 | 更多文字 | B2 |
x2 | 一些文本 | 其他文本 | 更多文字 | B1 |
x2 | 一些文本 | 其他文本 | 更多文字 | A2 |
x2 | 一些文本 | 其他文本 | 更多文字 | B1 |
以下:
select distinct id,
case when type='A2' then string_agg (concat(cast (value_1 as nvarchar (max)),value_1,value_2,value_3)) end as type_A2,
case when type='B1' then string_agg (concat(cast (value_1 as nvarchar (max)),value_1,value_2,value_3)) end as type_B1
from source
group by id, type
产生:
ID | type_a2 | 类型_B1 |
---|---|---|
x1 | 一些文本其他文本更多文本 | 空值 |
x1 | 空值 | 一些文本其他文本更多文本 |
x2 | 一些文本其他文本更多文本 | 空值 |
x2 | 空值 | 一些文本其他文本更多文本 |
当我尝试一次只运行一列时,我仍然得到一些 NULL 结果。
如何将这些结果放在每个唯一 ID 的一行中?
IE...
ID | type_a2 | 类型_B1 |
---|---|---|
x1 | 一些文本其他文本更多文本 | 一些文本其他文本更多文本 |
x2 | 一些文本其他文本更多文本 | 一些文本其他文本更多文本 |
x3 | ETC | ETC |