我正在使用join和union从SQL中的多个表中检索数据。我有一些带有重复ID的行,我只需要返回那些重复ID行的顶行,并将所有重复行中特定列中的数据合并到返回的顶行中的一列中。我不能使用max(createDate)因为它们在日期中也是重复的。
这是我的存储过程:
select distinct
table1.*,
table2.*
from
calsses table1
inner join documents table2 on table1.ID = table2.ID
union all
select distinct
table3.*,
table2.*
from
exams table3
inner join documents table2 on table3.ID = table2.ID
order by table2.Date desc
结果如下:
当我运行此存储过程时,我会得到具有重复ID的行。
如何从所有重复行中返回1行,并将重复行中“Exams”列中的数据合并到单个返回行中的“Exams”列中?
请指教。感谢。
答案 0 :(得分:0)
我认为XML PATH
是你的陈述。
如果我提出你的问题,你有两个相同的行,而你没有任何字段可以选择一个。所以这一行中的任何一行都有Address
字段分组。
select *,
STUFF((SELECT '; ' + US.USR_NAME
FROM table_where_is_address twis
WHERE twis.ID = aux.ID_to_join_with_correct_row
FOR XML PATH('')), 1, 1, '') as grouped_address
from (
select distinct
table1.*,
table2.*
from calsses table1
inner join documents table2 on table1.ID = table2.ID
union all
select distinct
table3.*,
table2.*
from exams table3
inner join documents table2 on table3.ID = table2.ID
order by table2.Date desc
) aux
这为您的数据模型修改后应该有效。
答案 1 :(得分:0)