我有一个表(T1),它包含一个使用FOR XML PATH连接值的列(让我们称之为OrderNumber)。最初这些OrderNumber基于值V1进行汇总,现在我需要根据新值V2再次连接这些OrderNumber以创建新表(T2)。 V1和V2都存在于表T1中,V1实际上是V2的子值。
我尝试做另一个FOR XML PATH,但它返回结构中我无法使用的值。
正确的OrderNumber以纯HTML格式
作为超链接返回<a href="/checker/OrderInformation.aspx?SONumber=111"></a></br><a href="/checker/OrderInformation.aspx?SONumber=222"></a></br>
但是,当我尝试再次连接时,实际上会返回以下内容
<OrderNumber><a href="/checker/OrderInformation.aspx?SONumber=111"></a></br><a href="/checker/OrderInformation.aspx?SONumber=222"></a></br><a href="/checker/OrderInformation.aspx?SONumber=333"></a></br></OrderNumber>
我累了删除后面的代码中的OrdrNumber标记,但它不起作用。任何帮助将不胜感激!
[编辑]
结果表非常大,所以我将发布一些相关部分。
表1
TONumber | TOKey | OrderNumber
3672 | 231 | <a href="/checker/OrderInformation.aspx?SONumber="111"></a></br><a href="/checker/OrderInformation.aspx?SONumber="222"></a></br>
3672 | 232 | <a href="/checker/OrderInformation.aspx?SONumber="333"></a></br>
3821 | 265 | <a href="/checker/OrderInformation.aspx?SONumber="653"></a></br>
我在表1中基于TOKey(V1)连接了OrderNumber值,并且还共享相同的TONumber(V2)。我想要完成的是以下
期待
TONumber | OrderNumber
3672 | <a href="/checker/OrderInformation.aspx?SONumber="111"></a></br><a href="/checker/OrderInformation.aspx?SONumber="222"></a></br><a href="/checker/OrderInformation.aspx?SONumber="333"></a></br>
3821 | <a href="/checker/OrderInformation.aspx?SONumber="653"></a></br>
真实结果
TONumber | OrderNumber
3672 | <OrderNumber><a href="/checker/OrderInformation.aspx?SONumber="111"></a></br><a href="/checker/OrderInformation.aspx?SONumber="222"></a></br><a href="/checker/OrderInformation.aspx?SONumber="333"></a></br></OrderNumber>
3821 | <OrderNumber><a href="/checker/OrderInformation.aspx?SONumber="653"></a></br></OrderNumber>
代码
select T1.TONumber,
(select T2.OrderNumber
from Table1 T2
where T1.TONumber = T2.TONumber
for xml path('')) as OrderNumber
from Table1 T1
group by TONumber
我之所以提到代码背后的原因是因为我不知道如何在SQL中实现我的目标而只是尝试一下。我试图看看是否可以将它保存在存储过程中。
答案 0 :(得分:0)
当然......再次使用FOR XML ......
declare @table table (TONumber int, TOKey int, OrderNumber varchar(max))
insert into @table
values
(3672,231,'<a href="/checker/OrderInformation.aspx?SONumber="111"></a></br><a href="/checker/OrderInformation.aspx?SONumber="222"></a></br>'),
(3672,232,'<a href="/checker/OrderInformation.aspx?SONumber="333"></a></br>'),
(3821,265,'<a href="/checker/OrderInformation.aspx?SONumber="653"></a></br>')
select distinct
t.TONumber
,stuff((
SELECT ', ' + cast(t2.OrderNumber as varchar(max))
FROM @table t2
WHERE t2.TONumber = t.TONumber
FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '')
from
@table t
或者您可以使用group by t.TONumber
并删除不同的