如何使用FOR XML/sql查询获得如下输出。我不知道如何将列值作为元素而不是表格的列名称。我使用SQL Server 2005用于XML语法的SQL SERVER
我有表SCEMA如下
CREATE TABLE PARENT
(
PID INT,
PNAME VARCHAR(20)
)
CREATE TABLE CHILD
(
PID INT,
CID INT,
CNAME VARCHAR(20)
)
CREATE TABLE CHILDVALUE
(
CID INT,
CVALUE VARCHAR(20)
)
INSERT INTO PARENT VALUES (1, 'SALES1')
INSERT INTO PARENT VALUES (2, 'SALES2')
INSERT INTO CHILD VALUES (1, 1, 'FOR01')
INSERT INTO CHILD VALUES (1, 2, 'FOR02')
INSERT INTO CHILD VALUES (2, 3, 'FOR03')
INSERT INTO CHILD VALUES (2, 4, 'FOR04')
INSERT INTO CHILDVALUE VALUES (1, '250000')
INSERT INTO CHILDVALUE VALUES (2, '400000')
INSERT INTO CHILDVALUE VALUES (3, '500000')
INSERT INTO CHILDVALUE VALUES (4, '800000')
我找的输出如下:
<SALE1>
<FOR01>250000</FOR01>
<FOR02>400000</FOR02>
</SALE1>
<SALE2>
<FOR03>500000</FOR03>
<FOR04>800000</FOR04>
</SALE2>
感谢您的回复。我也能够得到像你一样的东西,但我真的希望列名作为元素。那么,我所要求的FOR XML语法是不可能的?此外,我可以在存储过程中操作表格,在内部使用一些临时表格等,但仍不清楚我如何获得所需结果。 – Raj73 2010-04-29 18:01:01
@ Raj73:从我所了解的有关SQL Server及其FOR XML支持的所有信息中,您尝试执行的操作都无法完成。如果您对获得的结果不满意,则必须使用一些编程语言,如C#或VB.NET或其他语言来读取数据并呈现XML。 – 2010-04-29 18:17:20
谢谢,我们将有一百万行,我不想使用C#/ ado.net/linq来生成和渲染xml。我打算从命令行运行查询/存储过程并将结果输出为xml文件。也许使用编程语言是唯一可以完成的方法。 – Raj73 2010-04-29 18:23:36