如何为Item1和Item1 +'char'求和

lou*_*our 1 t-sql sql-server

我有一个关于SQL问题的问题.

例如,我有一个像这样的表格:

|  ITEM  |  VALUE  |
|A0001   |   3     |
|A0001   |   2     |
|A0002   |   2     |
|A0003   |   7     |
|A0003   |   3     |
|A0003U  |   2     |

如您所见,Item可以包含may值.所以我已经做过的事情就是SUM()附加到每个项目的所有值,以获得他的价值总和.

我现在要做的是添加附加到Item的值和此Item +'U'

例如,项目A0003U 的值总和将为

7(项目的第1行)+ 3(项目的第2行)+ 2(项目的第1行+'U') = 12

我知道我可以使用函数RIGHT(Item,1),如果它以'U'结尾将返回'U',但我不知道如何进行所有计算.

编辑:

结果应该是:

|  ITEM  |  VALUE  |
|A0001   |   5     |
|A0002   |   2     |
|A0003   |   12     |

cod*_*ger 6

这将通过获取ITEM列的前5个字符并按它们分组来汇总值.这将包括结束的项目U

Select Left(ITEM,5),
        SUM(VALUE)
From Table
Group by Left(ITEM,5)
Run Code Online (Sandbox Code Playgroud)

编辑

假设它U始终是最后一个字符并且只出现一次,那么您可以使用此替代方法:

Select  Case 
            When CHARINDEX('U', ITEM) > 0 Then LEFT(ITEM, CHARINDEX('U', ITEM)-1)
            Else ITEM
        End,
        SUM(VALUE)
From Table
Group by    Case 
            When CHARINDEX('U', ITEM) > 0 Then LEFT(ITEM, CHARINDEX('U', ITEM)-1)
            Else ITEM
            End
Run Code Online (Sandbox Code Playgroud)