T-SQL: SUM число между разделителями из строки - PullRequest
0 голосов
/ 07 сентября 2018

Мне нужно вывести числа с переменной длиной из строки и суммировать их.

Строки получили следующий формат:

EH:NUMBER=SomeOtherStuff->Code

Я извлекаю код с помощью RIGHT() и присоединяюсь к другой таблице, чтобы получить правильную группу, в данный момент я использую сумму, чтобы собрать ее по дате:

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 голосов
/ 07 сентября 2018

Короткая версия: То, что вы ищете, это SUBSTRING.

Более длинная версия: Чтобы получить сумму числового значения NUMBER, нужно подумать о том, как его разбить.

Я бы порекомендовал следующие шаги:

  1. Извлечение части NUMBER из строки. Это должно быть сделано с помощью SUBSTRING (так же, как вы извлекаете код с помощью RIGHT). Чтобы узнать начало и длину вашей подстроки, используйте charindex (или patindex, если хотите).
  2. Преобразование части NUMBER в числовое значение с помощью приведения (или преобразования или того, с чем вы знакомы)
  3. Теперь вы можете выполнить агрегацию.

So SUM (CAST (SUBSTRING (* эту часть вам придется выяснить самостоятельно)) как правильный числовой тип данных )). Я позволю вам самим определить значения для вставки и рекомендую сначала найти позиции символов-разделителей, затем извлечь часть NUMBER, а затем получить числовое значение .... вы получите его.

Это поможет вам лучше понять, что вы на самом деле делаете.

Приветствия, и удачи с вашим заданием Martin

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...