对于带有临时表的XML Union

时间:2013-05-24 18:21:50

标签: sql sql-server xml temp-tables

我知道如何进行联合并从不同的表中吐出XML文件,但是,我需要创建一个临时表来容纳我需要成为XML文件一部分的3条记录。结构与其他表格完全相同。

我将如何做到这一点?

select * from
(
  select ID_Number as [ID], CLAST as [name/last], CFIRST as [name/first], '' as extension]
  from dbo.users as a 
  union all
  select PID as [ID], NID as [name/last], NAME as [name/first],  PREF_TITLE as [extension] 
  from dbo.Person
) as a
FOR XML PATH('employee'), ROOT('employees')

所以我需要3行数据,这些数据将填充ID,姓名/姓氏,名字/名字和扩展名。

什么是最好的推荐?

1 个答案:

答案 0 :(得分:0)

创建临时表,填充它并将其作为另一个UNION ALL添加到查询中。有different types of temporary table,这里有一些使用表变量的代码,最简单的类型......

DECLARE @tempTable TABLE
(
  ID int,
  Surname varchar(30),
  FirstName varchar(30),
  Title varchar(30)
)

INSERT @tempTable VALUES (7, 'Siobhan', 'Green', 'Ms')
INSERT @tempTable VALUES (8, 'Paul', 'Jones', 'Mr')
INSERT @tempTable VALUES (9, 'Sam', 'Morrison', 'Mrs')

SELECT * FROM
(
  SELECT ID_Number as [ID], CLAST as [name/last], CFIRST as [name/first], '' as [extension]
  FROM users as a 
  UNION ALL
  SELECT PID, NID, NAME, PREF_TITLE 
  FROM Person
  UNION ALL
  SELECT ID, Surname, FirstName, Title
  FROM @tempTable
) as a
FOR XML PATH('employee'), ROOT('employees')

Click here to see it in action at SQL Fiddle