SQL-запрос со сложными объединениями в Postgresql - PullRequest
0 голосов
/ 29 ноября 2018

У меня есть таблица со следующими 5 столбцами:

"REPORT NUMBER", "PAGE ID", "ROW NUMBER", "COLUMN NUMBER","VALUE"

Ниже приведен пример из 5 строк 1.6MM, которые у меня есть в SQL.

"580498"    "B000002"   "00500" "01600" "17"    
"580498"    "B000002"   "00600" "02400" "201"    
"580508"    "B000002"   "00500" "01600" "42"    
"580508"    "A000000"   "01000" "00200" "909874"    
"580508"    "A000000"   "01000" "00300" "1432422"

Каждая страница-Комбинация строки-столбца представляет собой карту с особым значением.Для страницы экземпляра B000002 в строке 00500 столбца 01600 указывается количество сотрудников для этого номера отчета.Другие комбинации показывают мне доход, расходы и т. Д. Для каждого номера отчета.

Я хочу создать новую таблицу со следующими столбцами:

"REPORT NUMBER", "EMPLOYEES", "ANOTHER COLUMN", "ANOTHER COLUMN"
"580498"    "17"    ""  ""
"580508"    "42"    ""  ""

Где есть только одна строка длякаждый номер репортажа.Я знаю, что можно просто продолжать выполнять объединения, но нужно добавить более 150 столбцов, поэтому я надеялся, что есть альтернативный способ сделать это.

СПАСИБО В СЛУЧАЕ!

1 Ответ

0 голосов
/ 29 ноября 2018

Я думаю, вы хотите условное агрегирование:

select report_number,
       max(value) filter (where Page = 'B000002' and row = '00500' and column = '01600') as num_employees 
rom t
group by report_number;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...