使SQL列成为另一列的XML节点
我想将第一个XML文件转换为第二个XML文件的格式,本质上主要区别在于我不希望masterBatchNo的值重复。相反,我只需要masterBatchNo的一个唯一值,并将其他属性作为子节点。有什么方法可以做到这一点吗?您可以对xml路径使用使SQL列成为另一列的XML节点,sql,sql-server,xml,sql-server-2008,xslt,Sql,Sql Server,Xml,Sql Server 2008,Xslt,我想将第一个XML文件转换为第二个XML文件的格式,本质上主要区别在于我不希望masterBatchNo的值重复。相反,我只需要masterBatchNo的一个唯一值,并将其他属性作为子节点。有什么方法可以做到这一点吗?您可以对xml路径使用,来更好地控制xml的构造方式。在派生表中使用PV_Batch创建嵌套的XML,并使用@创建属性 exists子句用于排除PV\u主批次中没有从PV\u批次生成任何子节点的行 select MB.masterBatchNo as [@masterBatchN
,
来更好地控制xml的构造方式。在派生表中使用PV_Batch
创建嵌套的XML,并使用@
创建属性
exists
子句用于排除PV\u主批次
中没有从PV\u批次
生成任何子节点的行
select MB.masterBatchNo as [@masterBatchNo],
(
select B.processStage as [@processStage],
B.processBatchNo as [@processBatchNo]
from PV_Batch as B
where B.masterBatchNo = MB.masterBatchNo and
B.projectid = @varProjectID
for xml path('tempTable'), type
)
from PV_MasterBatch as MB
where MB.stage = @varStage and
exists (
select *
from PV_Batch as B
where B.masterBatchNo = MB.masterBatchNo and
B.projectid = @varProjectID
)
for xml path('PV_Batch'), root('Root')
如果不使用别名,则很难确定列来自哪些表。如果您可以发布表结构,这会有所帮助。它们基本上来自一个表,当masterBatchNo相互匹配时,内部联接将连接两个表。什么表具有
masterBatchNo
主键?stage
来自哪个表?stage来自PV_MasterBatch表,两个表都有masterBatchNo,PV_Batch表有主键,但我认为这不重要,因为两个表都包含相同的masterBatchNo列。masterBatchNo
是PV_MasterBatch
中的主键吗?