首页 > 解决方案 > 将记录合二为一?

问题描述

CATEGORY     DESC                                       AMOUNT   
50200105 Sub Contractor - SLW                             1000     
50200205 Sub Contractor - Meal Operator - SLW             0   
50200305 Sub Contractor - Garbage - SLW                 2000 

结果

CATEGORY                  DESC                            AMOUNT   
50200105                Sub Contractor - SLW              3000 

标签: sql-server

解决方案


让我们用这么多的 let 以某种方式实现你的输出;)

让 - 您正在尝试使用列中值的最后一部分对结果进行分组 - 描述。

让 - 您可以在组中保留 CATEGORY 列中的 MIN 值。

现在 - 试试下面的查询。只是想以某种方式帮助你:)

SELECT MIN(CATEGORY) CATEGORY, 
'Sub Contractor - '+ TRIM(REVERSE(LEFT(REVERSE(DESCRIPTION), CHARINDEX('-',REVERSE(DESCRIPTION),0)-1))) DESCRIPTION,
SUM(AMOUNT) AMOUNT
FROM your_table
GROUP BY TRIM(REVERSE(LEFT(REVERSE(DESCRIPTION), CHARINDEX('-',REVERSE(DESCRIPTION),0)-1)))

在这里演示


推荐阅读