具有两个表中两列的Sql server XML路径
我有以下疑问具有两个表中两列的Sql server XML路径,sql,sql-server,csv,Sql,Sql Server,Csv,我有以下疑问 SELECT F.ID, (S.Parameter + '="' + F.Value + '"') AS params FROM FirstTable F WITH (NOLOCK) LEFT JOIN SecondTable S ON F.ID = S.ID 输出如下所示 ID params 21 rev="REVENUE" 21 cv_1="CUS
SELECT F.ID,
(S.Parameter + '="' + F.Value + '"') AS params
FROM FirstTable F WITH (NOLOCK)
LEFT JOIN SecondTable S ON
F.ID = S.ID
输出如下所示
ID params
21 rev="REVENUE"
21 cv_1="CUSTOM1"
21 cv_2="CUSTOM2"
20 rev="Revvv"
20 cv_1="cus 1"
20 cv_2="cus2 "
我想要像这样的输出
ID params
21 rev="REVENUE";cv_1="CUSTOM1";cv_2="CUSTOM2"
20 rev="Revvv";cv_1="cus 1";cv_2="cus2"
我尝试使用Stuff和XML路径,但无法获得所需的输出
我正在努力
SELECT F.ID,
STUFF( (SELECT (';' + S.Parameter + '="' + F.Value + '"') AS params
FROM FirstTable F WITH (NOLOCK)
LEFT JOIN SecondTable S ON
S.ID = F.MacroID
WHERE F.ID = S.ID
FOR XML PATH ('')
), 1, 1, '') as params
FROM FirstTable F WITH (NOLOCK)
LEFT JOIN SecondTable S ON
S.ID = F.ID
有人能帮我做这个吗
谢谢你想必你想要:
SELECT F.ID,
STUFF( (SELECT (';' + S.Parameter + '="' + S.Value + '"')
FROM SecondTable S
WHERE F.ID = S.DID
FOR XML PATH (''), TYPE
).VALUE('.', 'NVARCHAR(MAX)'
), 1, 1, ''
) as params
FROM FirstTable F ;
您可以使用
groupby
将STRING\u AGG
添加到现有代码中(SQL Server 2017+
支持STRING\u AGG
)
很抱歉,查询中有一点错误,S.值实际上来自Ftable@YogeshSharma . . . 谢谢。我正在使用2012
Select ID, string_agg(params, ';')
from (
SELECT F.ID,
(S.Parameter + '="' + F.Value + '"') AS params
FROM FirstTable F WITH (NOLOCK)
LEFT JOIN SecondTable S ON
F.ID = S.DID
) a
group by ID