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
我有一个相当简单的查询 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