T-SQL:字符串分隔符之间的SUM编号

时间:2018-09-07 13:08:58

标签: sql-server tsql sum type-conversion

我需要从字符串中获取长度可变的数字并将其求和。

字符串的格式如下:

EH:NUMBER=SomeOtherStuff->Code

我正在通过RIGHT()提取代码,并与另一个表联接以使组正确,此刻,我正在使用sum通过日期将其组合在一起:

SUM(CASE WHEN (MONTH(data.DATE1) = 5  AND YEAR(data.DATE1) = YEAR(GETDATE())) THEN 1 ELSE 0 END) N'Mai',

然后我需要对字符串中的数字求和而不是行数。

一些例子:

Month1 EH:1=24->ZTM
Month1 EH:4=13-21->LKm
Month2 EH:3=34,33,43->LKm
Month2 EH:7=12,92-29,29->LKm
Month2 EH:5=24-26,11,21,22->ZOL

我需要什么

Material - Month1 - Month2
ZTM - 1 - 0
LKM - 4 - 10
ZOL - 0 - 5

能帮我吗?

问候

1 个答案:

答案 0 :(得分:0)

短版: 您正在寻找的是SUBSTRING。

更长的版本: 要获得NUMBER的数值总和,您需要考虑如何将其分解。

我建议您按照以下步骤操作:

  1. 从字符串中提取NUMBER部分。这应该使用SUBSTRING完成(就像您用RIGHT提取代码一样)。要获取您的子字符串的开始和长度,请使用charindex(如果愿意,可以使用patindex)。
  2. 使用强制转换(或转换或您熟悉的格式)将NUMBER部分转换为数值
  3. 现在您可以进行汇总了。

所以SUM(CAST(SUBSTRING(*这部分您必须自己弄清楚))作为正确的数值数据类型))。 我将让您自己找出要插入的值,并建议您首先找到定界字符的位置,然后提取NUMBER部分,然后获取数字值....即可。

这样可以更好地了解您的实际工作。

干杯,祝您工作顺利 马丁