[英]Taking multiple select query results and making differences columns for a single row
I have a simple select query in db2 that works but I'm trying to find a way to turn result records into columns for one result record. 我在db2中有一个简单的选择查询,但我正在尝试找到一种方法将结果记录转换为一个结果记录的列。 I have: 我有:
SELECT item_id, t2.item_title, t2.item_data
FROM item t1
INNER JOIN title t2
ON t1.item_id = t2.item_id
This gives 这给了
item_id | item_title | item_data
-----------------------------------
123 Main Test Title
123 Sub Subtitle
Is there a way I can alter the select to get the data for each title type as a column and only return one row? 有没有办法可以改变select来获取每个标题类型的数据作为一列,只返回一行?
so I want to get main and sub as their own column and return: 所以我想将main和sub作为自己的列并返回:
item_id | main_data | sub_data
-----------------------------------
123 Test Title Subtitle
This is a pivot operation, and a cross-platform way to achieve it looks like this: 这是一个数据透视操作,实现它的跨平台方式如下所示:
Step 1: break the data into its own columns for main and sub: 第1步:将数据分成自己的主要和子列:
SELECT
t1.item_id,
CASE WHEN t2.item_title = 'Main' THEN t2.item_data END as main_title,
CASE WHEN t2.item_title = 'Sub' THEN t2.item_data END as sub_title
FROM item t1
INNER JOIN title t2
ON t1.item_id = t2.item_id
Step 2: squish the results down to one row, getting rid of the nulls using group/max 第2步:将结果压缩到一行,使用group / max去掉空值
SELECT
t1.item_id,
MAX(CASE WHEN t2.item_title = 'Main' THEN t2.item_data END) as main_title,
MAX(CASE WHEN t2.item_title = 'Sub' THEN t2.item_data END) as sub_title
FROM item t1
INNER JOIN title t2
ON t1.item_id = t2.item_id
GROUP BY t1.item_id
This is a pivot operation,you can try this WITH Opening AS( SELECT item_id, t2.item_title, t2.item_data FROM item t1 INNER JOIN title t2 ON 这是一个数据透视操作,您可以尝试使用WITH Opening AS(SELECT item_id,t2.item_title,t2.item_data FROM item t1 INNER JOIN title t2 ON
t1.item_id = t2.item_id) SELECT item_id,Main ,Sub PIVOT( item_data FOR item_title IN([Main],[Sub]) ) as PivotTable FROM Opening; t1.item_id = t2.item_id)SELECT item_id,Main,Sub PIVOT(item_data FOR item_title IN([Main],[Sub]))作为PivotTable FROM Opening;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.