繁体   English   中英

获取多个选择查询结果并为单行创建差异列

[英]Taking multiple select query results and making differences columns for a single row

我在db2中有一个简单的选择查询,但我正在尝试找到一种方法将结果记录转换为一个结果记录的列。 我有:

SELECT item_id, t2.item_title, t2.item_data
FROM item t1 
INNER JOIN title t2
ON  t1.item_id = t2.item_id

这给了

item_id | item_title  |   item_data
-----------------------------------
123         Main          Test Title
123         Sub           Subtitle

有没有办法可以改变select来获取每个标题类型的数据作为一列,只返回一行?

所以我想将main和sub作为自己的列并返回:

item_id | main_data  |   sub_data
-----------------------------------
123      Test Title      Subtitle

这是一个数据透视操作,实现它的跨平台方式如下所示:

第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

第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

这是一个数据透视操作,您可以尝试使用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]))作为PivotTable FROM Opening;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM