db2,分组数据以便结果可以是列名

db2, group data so that results can be column names

我有一个相当简单的查询 returns 结果集,我不仅想对其进行分组和计数,而且我还想将结果转换为列名(这是在 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;

returns:

    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

所以店号就是列名,计数就是数据。我怎样才能正确地做到这一点?

我认为 DB2 没有数据透视表功能。您将需要使用案例语句和聚合。类似于:

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