如何将@ xml.nodes加入表列

时间:2013-11-11 11:21:22

标签: sql-server tsql sql-server-2012

我正在尝试查询XML文件,并且还要加入现有的表列。 XML部分可以单独工作,但在尝试连接时会中断。我知道语法在某处错了。任何人都可以建议如何获取XML数据的ID列以链接到MyTable中的ID列?

SELECT
    CAST(u.n.value('@ID', 'int') AS int),
    CAST(u.n.value('@userId', 'int') AS int),
    CAST(u.n.value('@roleId', 'int') AS int),
    ah.DateCol
FROM
    @xml.nodes('/appliedprofiles/ah') AS u (n) CROSS APPLY
    [MyTable] ah ON CAST(u.n.value('@ID', 'int') AS int) = ah.ID

1 个答案:

答案 0 :(得分:3)

你的语法错了。 APPLY运算符不支持ON子句。 您需要使用正确的join子句来执行此操作。

这应该有效:

SELECT
    CAST(u.n.value('@ID', 'int') AS int),
    CAST(u.n.value('@userId', 'int') AS int),
    CAST(u.n.value('@roleId', 'int') AS int),
    ah.DateCol
FROM
    @xml.nodes('/appliedprofiles/ah') AS u (n) INNER JOIN
    [MyTable] ah ON CAST(u.n.value('@ID', 'int') AS int) = ah.ID