Группировать по подстроке в ячейке

#sql #sql-server

#sql #sql-сервер

Вопрос:

У меня есть таблица с сообщением об имени столбца, и этот столбец содержит значения в фиксированном формате, как показано ниже.

Форматировать:-

 QU FRASELH  .CPHBOSK LH/050840  COR MVT
  

Что мне нужно, так это подсчитать количество сообщений на основе group by по 2-й подстроке (например, FRASELH в приведенном выше случае)

 SELECT COUNT(*), ORIGIN_QUEUE
FROM info
where TIME_STAMP >='2016-10-05 00:00:00'and TIME_STAMP<= '2016-10-06 00:00:00'
group by (????)
  

Заранее спасибо.

Комментарии:

1. Добавьте больше образцов данных и ожидаемый результат.

2. Вы должны указать, на какой СУБД вы работаете (Oracle, MySQL, …), а также что означает «фиксированный формат» в вашем случае? Какие значения фиксированы в примере? В зависимости от этого будет построено решение.

3. @a_horse_with_no_name db — это sql server.

4. @EmilHolub фиксированный формат означает, что значения в каждой ячейке для столбца сообщения имеют одинаковый формат. например, одна ячейка имеет 4 значения (первая подстрока имеет 2 символа _space_2-я подстрока имеет 6 символов_space_ и так далее). теперь этот формат исправлен для всех ячеек в столбце сообщения.

Ответ №1:

@EmilHolub фиксированный формат означает, что значения в каждой ячейке для столбца сообщения имеют одинаковый формат. например, одна ячейка имеет 4 значения (первая подстрока имеет 2 символа _space_2-я подстрока имеет 6 символов_space_ и так далее).теперь этот формат исправлен для всех ячеек в столбце сообщения.

Учитывая, что этого должно быть достаточно для выполнения:

 SELECT substr(ORIGIN_QUEUE,4,6) COUNT(*), 
FROM info
where TIME_STAMP >='2016-10-05 00:00:00'and TIME_STAMP<= '2016-10-06 00:00:00'
group by substr(ORIGIN_QUEUE,4,6)
  

Он сгруппирует ваши значения на основе 4-9-го символа в строке ORIGIN_QUEUE .

Комментарии:

1. спасибо вам. Это сработало (просто это должна быть подстрока вместо substr).

2. О, извините, я работаю в основном с базами данных Oracle, я не уверен во всех различиях в языке кода. Рад, что это помогло.