sql - 基于 Microsoft SQL Server 中的模式与 groupby 一起使用时如何连接行?
解决方案
如果金额列中的值后面有空单元格(如您所说),您可以使用 ROW_NUMBER() 获取 cte 中的唯一编号,然后计算每行的总和(按新唯一编号排序)(将是一个金额相同)。最后,在 FOR XML PATH() 中使用 cte。
--getting Sum as unique for every sequence (Amount and following values)
with cte AS
(
select Id,Amount,Number,sum(Amount)over(order by Number rows unbounded preceding)SumSeq,comment
from
(
select Id,Amount,comment,
row_number()over(order by Id)Number from Table
)x
)
select id,max(Amount),ConcatComments from
(
select id,SumSeq,Amount,
stuff((select Concat(',',comment)
from cte cte1 where cte1.SumSeq=cte2.SumSeq
for xml path('')),1,2,'') ConcatComments from cte cte2
)Z
group by SumSeq,id,ConcatComments
推荐阅读
- pointers - char* 指针在 C 中如何工作?它们是如何存储的?
- python-3.x - 如何填充口罩?
- java - 我们可以为外部mysql服务器配置spring.datasource.url吗
- javascript - 如何在 javascript 中专家搜索/排序/过滤?
- java - Firestore 数据库注册失败权限被拒绝但实际上注册成功
- c++ - C++,Shared_ptr, 请告诉我为什么我的代码出错了?
- python - 通过索引从字典列表中获取项目
- javascript - 如何在js中使用事件监听器链接到html?
- javascript - 在滚动位置添加一个类
- r - R中是否有一个函数可以让我创建一个新的数据框,其中包含第一个数据框中的重复值?