在从字符串中提取的字段上按未按预期分组

我无法让 Group By 正常运行,但我不确定我错过了什么。

ItemPath 是我的问题,我相信。当我使用 Group By 时,它按 ItemPath 进行分组,即使路径末尾的 ReportName 相同,它的长度和内容也可能不同。我需要它们按 ReportName 分组,而不是实际的 ItemPath。我不确定我错过了什么才能让它发生。你可以在下面看到我的代码结果。它们应该按名称分组,但它们不是,因为 ItemPath 可能不同,因此只有其中一些匹配。

我尝试创建一个派生表并按 ReportName 列分组,但这产生了相同的结果,因为我不得不将 ItemPath 包含在 group by 子句中,因为它没有在 SELECT 语句中聚合。

SELECT Count(ItemPath) AS ExecutionCount,RIGHT(ItemPath,CHARINDEX('/',REVERSE([ItemPath]),0) - 1) AS ReportName,SUM([TimeDataRetrieval]) AS TimeDataRetrievalSum,SUM([TimeProcessing]) AS TimeProcessingSum,SUM([ByteCount]) AS ByteCountSum,SUM([RowCount]) AS RowCountSum
 FROM [ReportServer].[dbo].[ExecutionLog3]
 WHERE ItemPath LIKE '%/example/%' AND 
       ItemPath NOT LIKE '%placeholder%' AND 
       ItemPath NOT LIKE '%example2%'
GROUP BY ItemPath
ORDER BY ExecutionCount DESC

当前结果示例(“发票”应该分组,但它们不是):

| ExecutionCount | ReportName |TimeDataRetrievalSum|
| -------------- | ---------- |--------------------|
| 1246           | Invoice    |82303               |
| 41             | Invoice    |6303                |
| 8              |Remittance  |153                 |

谢谢!

seraph59 回答:在从字符串中提取的字段上按未按预期分组

你需要这样的东西:

SELECT Count(ItemPath) AS ExecutionCount,RIGHT(ItemPath,CHARINDEX('/',REVERSE([ItemPath]),0) - 1) AS ReportName,SUM([TimeDataRetrieval]) AS TimeDataRetrievalSum,SUM([TimeProcessing]) AS TimeProcessingSum,SUM([ByteCount]) AS ByteCountSum,SUM([RowCount]) AS RowCountSum
 FROM [ReportServer].[dbo].[ExecutionLog3]
 WHERE ItemPath LIKE '%/example/%' AND 
       ItemPath NOT LIKE '%placeholder%' AND 
       ItemPath NOT LIKE '%example2%'
GROUP BY RIGHT(ItemPath,REVERSE([ItemPath])
ORDER BY ExecutionCount DESC
本文链接:https://www.f2er.com/15946.html

大家都在问