Sql server 将中的每个子标记转换为具有多个分隔符的单个列-SQL Server(2)

Sql server 将中的每个子标记转换为具有多个分隔符的单个列-SQL Server(2),sql-server,xml,tsql,xpath,xquery,Sql Server,Xml,Tsql,Xpath,Xquery,但这里的问题是,这会将所有标记合并到一个列中。当我们查看xml时,它有两个主要部分,即处方id=1和处方id=2。因此,我们的最终结果如下所示 结果: 我认为我们必须将Xml分解成每一个,然后再计算这个 能找个人来解决这个问题吗 提前感谢,Jayendran将您的查询更改为: ABC$Daily$2$$1$!EDF$Daily$5$5$1$!YTER$Weekly$5$5$1$Monday,Tuesday,Wednesday YTRE$Daily$2$$1$ 首先,我们为不同的处方创建一个派生

但这里的问题是,这会将所有标记合并到一个列中。当我们查看xml时,它有两个主要部分,即处方id=1和处方id=2。因此,我们的最终结果如下所示

结果:

我认为我们必须将Xml分解成每一个,然后再计算这个

能找个人来解决这个问题吗


提前感谢,Jayendran将您的查询更改为:

ABC$Daily$2$$1$!EDF$Daily$5$5$1$!YTER$Weekly$5$5$1$Monday,Tuesday,Wednesday
YTRE$Daily$2$$1$

首先,我们为不同的处方创建一个派生表,然后,我们分别为每个处方使用前一个代码。

I将结构转换为更复杂的XML,这使我很难查询。您能帮我解决这个问题吗
SELECT STUFF(
(
    SELECT '!' + STUFF(p.query(N'for $n in .//*[local-name()!="dailyfrequency"]
                           return <a>{concat("$",($n/text())[1])}</a>'
                        ).value(N'.',N'nvarchar(max)'),1,1,'')
    FROM @xml.nodes(N'/plan/prescriptions/prescription') AS A(p)
    FOR XML PATH(''),TYPE).value(N'.',N'nvarchar(max)'),1,1,'')
ABC$Daily$2$$1$!EDF$Daily$5$5$1$!YTER$Weekly$5$5$1$Monday,Tuesday,Wednesday!YTRE$Daily$2$$1$
ABC$Daily$2$$1$!EDF$Daily$5$5$1$!YTER$Weekly$5$5$1$Monday,Tuesday,Wednesday
YTRE$Daily$2$$1$
SELECT STUFF(
(
    SELECT '!' + STUFF(p.query(N'for $n in .//*[local-name()!="dailyfrequency"]
                           return <a>{concat("$",($n/text())[1])}</a>'
                        ).value(N'.',N'nvarchar(max)'),1,1,'')
    FROM p.nodes(N'prescription') AS A(p)
    FOR XML PATH(''),TYPE).value(N'.',N'nvarchar(max)'),1,1,'')
FROM @xml.nodes(N'/plan/prescriptions') AS A(p);