gpt4 book ai didi

Sql For Xml Path 获取节点数

转载 作者:数据小太阳 更新时间:2023-10-29 02:32:34 25 4
gpt4 key购买 nike

我正在尝试使用“For Xml Path”T-SQL 从列中生成逗号分隔的值列表。这似乎很好用,但问题是我想计算逗号分隔列表中的项目数。这是我用来生成逗号分隔列表的代码示例:

Create Table #List ([col] varchar)

Insert Into #List Select '1';
Insert Into #List Select '2';
Insert Into #List Select '3'

Select ',' + [col] From #List For Xml Path('')

这给出了预期的结果 1、2、3,但是没有办法得到有 3 个项目的计数。任何添加计数的尝试都只会将其添加到 xml 中。我将此代码与 cte 结合起来以获取计数:

With CTE As (
Select
[col]
From
#List
)
Select
(Select ',' + [col] From #List For Xml Path('')) As [List],
Count(*) As [Count]
From
CTE

有没有更简单/更清晰的方法来获取节点数而不使用 CTE?有人指出,您可以只在内部选择内部和外部复制 from 子句,但这需要保持 from 子句同步。我想同时获取列表和计数,但只写了一次 from 子句。

最佳答案

如何从 CTE 而不是临时表中提取数据?

With CTE As (
Select
[col]
From
#List
-- Many joins
-- Complicated where clause
)
Select
(Select ',' + [col] From Cte For Xml Path('')) As [List],
Count(*) As [Count]
From
CTE

这将允许您将连接和搜索谓词保存在一个地方。

关于Sql For Xml Path 获取节点数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3638035/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com