T-SQL:来自String的分隔符之间的SUM号

问题描述 投票:0回答:1

我需要从字符串中获取具有可变长度的数字并对它们求和。

字符串具有以下格式:

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

请问你能帮帮我吗?

问候

sql-server tsql sum type-conversion
1个回答
0
投票

简短版:你要找的是SUBSTRING。

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

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

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

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

这样可以更好地了解您实际在做什么。

干杯,祝你马丁好运

© www.soinside.com 2019 - 2024. All rights reserved.