Использование временных данных в SQL-запросе

У меня есть таблица (maintable) формата:

(id, intcol1, intcol2, intcol3, ...)

Образец данных:

123, 582585, 25215718, 15519
234, 2583, 2371, 1841948
345, 42389, 234289, 234242

Я хочу выполнить некоторые совокупные вычисления, используя внешние данные для группировки данных. Данные, которые у меня есть, имеют вид:

(id, groupcol)

Образец данных:

123, "January",
234, "February"
345, "January"

В этом случае, предположим, я хочу, чтобы СУММА intcol1 с использованием предоставленных группировок соответствовала идентификаторам, результатом будет:

"January", 624974               # 42389 + 582585
"February", 2583

Мой вопрос: как мне получить «данные группы» в запросе? Используя предложение WITH и ПРИСОЕДИНЯЯСЬ к нему против maintable? Или добавить его во временную таблицу и использовать ее в следующем запросе?

Я могу манипулировать данными, которые у меня есть, и форматировать их, однако проще всего из программы, выполняющей SQL-запрос.

Какой самый лучший/быстрый/простой метод?

Отредактировано для ясности


person Christian P.    schedule 11.07.2017    source источник
comment
@a_horse_with_no_name Готово!   -  person Christian P.    schedule 11.07.2017
comment
Откуда 624974 в 624974 + 582585?   -  person a_horse_with_no_name    schedule 11.07.2017
comment
@a_horse_with_no_name Я работаю слишком быстро ›_‹ Исправлено   -  person Christian P.    schedule 11.07.2017


Ответы (1)


Это выглядит как простое объединение и группировка по:

select t2.groupcol, 
       sum(t1.intcol1)
from maintable t1 
  join table_2 t2 on t1.id = t2.id
group by t2.groupcol;

Если у вас нет этих «внешних» данных в таблице, вы можете сделать что-то вроде этого:

select t2.groupcol, 
       sum(t1.intcol1)
from maintable t1 
  join (
    values 
      (123, 'January'), 
      (234, 'February'),
      (345, 'January')
  ) as t2 (id, groupcol) on t1.id = t2.id
group by t2.groupcol;
person a_horse_with_no_name    schedule 11.07.2017