我在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
有没有一种方法可以更改选择,以获取每种标题类型的数据作为列,而只返回一行?
所以我想将main和sub作为自己的列并返回:
item_id | main_data | sub_data
-----------------------------------
123 Test Title Subtitle
答案 0 :(得分:3)
这是一个枢轴操作,实现它的跨平台方式如下:
步骤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
答案 1 :(得分:0)
这是一项重要操作,您可以尝试
随着开幕AS(
选择
item_id,
t2.item_title,
t2.item_data
从项目t1
INNER JOIN标题t2 ON
t1.item_id = t2.item_id)
选择
item_id,主要,子
枢(
item_data
FOR item_title IN([主],[子])
)作为数据透视表
从开头开始;