我之前问过一个非常相似的问题,但现在我需要相同的结果,但输入不同。
示例代码:
CREATE TABLE #Temp (
[@name] VARCHAR(200),
[Value] VARCHAR(200)
)
INSERT INTO #Temp ([@name], [Value])
SELECT 'Fruit', 'Apple' UNION
SELECT 'Fruit', 'Orange' UNION
SELECT 'Fruit', 'Grape'
选择语句
SELECT
[@name],
[Value]
FROM #Temp
FOR XML PATH ('Produce'), ROOT('ProduceMaster'), TYPE
结果
<ProduceMaster>
<Produce name="Fruit">
<Value>Apple</Value>
</Produce>
<Produce name="Fruit">
<Value>Grape</Value>
</Produce>
<Produce name="Fruit">
<Value>Orange</Value>
</Produce>
</ProduceMaster>
期望的结果
<ProduceMaster>
<Produce name="Fruit">
<Value>Apple</Value>
<Value>Grape</Value>
<Value>Orange</Value>
</Produce>
</ProduceMaster>
最佳答案
CREATE TABLE #Temp (
[@name] VARCHAR(200),
[Value] VARCHAR(200)
)
INSERT INTO #Temp ([@name], [Value])
SELECT 'Fruit', 'Apple' UNION
SELECT 'Fruit', 'Orange' UNION
SELECT 'Fruit', 'Grape' UNION
SELECT 'Building', 'house'
Select [@Name],
(
SELECT
[Value]
FROM #Temp t2
where t2.[@Name] = t1.[@Name]
FOR XML PATH (''), TYPE
) FROM #Temp t1 GROUP by [@Name]
FOR XML PATH ('Produce'), ROOT('ProduceMaster'), TYPE
关于sql - 是否可以在 SELECT 语句中将每个属性的多个值列在各自的行中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17754022/