db2, группируйте данные так, чтобы результаты могли быть именами столбцов - PullRequest
0 голосов
/ 10 марта 2020

У меня довольно простой запрос, который возвращает результирующий набор, который я хочу не только выполнить для группы и рассчитать, но я также хочу преобразовать результаты в имена столбцов (это в db2)

    select t1.user,t2.category,t2.color,t2.store_number  
    from table1 t1
    inner join table2 t2 
    ON t1.store_number = t2.store_number;

, который возвращает:

    user | category  |  color  |  store_number
    --------------------------------------------
    12      A           'blue'      123             
    12      A           'blue'      123
    12      A           'blue'      456
    12      A           'blue'      456
    12      A           'blue'      456
    12      A           'blue'      123
    12      A           'blue'      123
    12      A           'blue'      456
    12      A           'blue'      123
    12      A           'blue'      789

Так что это технически может привести к этому:

    user | store_number | count
    ------------------------------
    12        123           5
    12        456           4
    12        789           1

Но как я могу взять результаты запроса и фактически превратить его в это:

    user | 123  |  456  |  789
    ---------------------------
    12      5       4        1

Таким образом, номер магазина - это имя столбца, а количество - это данные. Как я могу правильно сделать это?

1 Ответ

1 голос
/ 10 марта 2020

Я не думаю, что у DB2 есть функция поворота. Вы должны будете использовать заявления случая и агрегирование. Что-то вроде:

    select
    user,
    count (case when store_number = 123 then color else null end) as store_123,
    ...
group by user
...