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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了T-SQL:来自String的分隔符之间的SUM号相关的知识,希望对你有一定的参考价值。

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

字符串具有以下格式:

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

请问你能帮帮我吗?

问候

答案

简短版:你要找的是SUBSTRING。

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

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

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

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

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

干杯,祝你马丁好运

以上是关于T-SQL:来自String的分隔符之间的SUM号的主要内容,如果未能解决你的问题,请参考以下文章

T-SQL拆分使用指定分隔符的字符串(split string)

SQL Server Compact Edition 和真正的 SQL Server 之间的 T-SQL 区别?

t-sql 函数,如 sum(x) 过滤器(条件)的“过滤器”(按

T-SQL基于分隔符拆分列并将拆分后的字符串数组输入到多个表列中

T-SQL -- 将逗号分隔的列转换为多列

如何获得 STRING 值之间的 MAX() 和 SUM() 值?