2017-01-11 6 views
-3

Fellow SOers,postgres: Умножающаяся колонка таблицы A с рядами таблицы B

В настоящее время я застрял в следующей задаче.

Скажет, мы имеем таблицу "данные" и таблицы "фактор"

"данные":

--------------------- 
| col1 | col2  | 
---------------------- 
| foo | 2  | 
| bar | 3  | 
---------------------- 

и таблица "фактор" (количество строк является переменным)

--------------------- 
| name | val  | 
--------------------- 
| f1 | 7  | 
| f2 | 8  | 
| f3 | 9  | 
| ... | ...  | 
--------------------- 

и следующий результат должен выглядеть следующим образом:

--------------------------------- 
| col1 | f1 | f2 | f3 | ...| 
--------------------------------- 
| foo | 14 | 16 | 18 | ...| 
| bar | 21 | 24 | 27 | ...| 
--------------------------------- 

Так что в основном я хочу, чтобы столбец «col2» был умножен на все содержимое «val» таблицы «factor», а содержимое столбца «name» должно выступать в качестве tableheader/columnname для результата.

Мы используем postgres 9.3 (возможно, возможно обновление до более высокой версии), поэтому расширенный поиск привел к нескольким возможным решениям: использование кросс-таблицы (хотя даже с кросс-таблицей я не смог ее разобрать), используя CTE " С "(желательно, но и не повезло). Вероятно, это также может быть сделано при правильном использовании array() и unnest().

Следовательно, любая помощь приветствуется о том, как достичь этого (чем меньше кода, тем лучше)

TNX заранее!

+2

Почему бы не сделать перекрестное соединение и пусть каждый элемент данных представляется один раз для каждой строки в фактор, как база данных предназначена? – coreyward

+2

Возможный дубликат [Создать сводную таблицу с PostgreSQL] (http://stackoverflow.com/questions/20618323/create-a-pivot-table-with-postgresql) – GurV

+0

Tnx для комментариев. При использовании простого кросс-соединения мне все равно нужно транспонировать набор результатов, что в основном приводит к «кросс-таблице» (или я что-то не понимаю). И в отношении самой кросс-таблицы: Как уже упоминалось, я не нашел способ динамически генерировать столбцы, то есть кросс-таблицу ($ magic), как (HOW_DO_I_GET_THE_COLS_IN_HERE?) – BePe

ответ

 Смежные вопросы

  • Нет связанных вопросов^_^