sql - 是否可以在 SELECT 语句中将每个属性的多个值列在各自的行中?

标签 sql sql-server xml tsql

我之前问过一个非常相似的问题,但现在我需要相同的结果,但输入不同。

示例代码:

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/

相关文章:

php - 新的 SQL 连接未出现在 LocalHost 中

java - 当我点击 ListView 项目时,应用程序崩溃,而不是打开另一个 Activity

android - 无法膨胀 ColorStateList,将其留给框架 java.lang.UnsupportedOperationException : Can't convert to color: type=0x2

sql - if/else column value choose select table, 排除json中的null

mysql - 如何从组中选择前两行

sql - 相当于 MS Access 交叉表查询的 TSQL

mysql - SQL 中缩写与不缩写

sql-server - sql server中使用 'select into table'复制表时缺少列的默认值

sql-server - Sql Server 2012 中的递归衰减平均值

xml - Hibernate 写入 XML 数据库