我在数据库中有以下表格:
"ID Number" "Balance Amount Type" "Balance Amount"
234 20 94
234 21 102
234 22 100
212 20 40
212 21 50
212 22 60
我想在上面的表Universe中创建一个下面派生的表(就像数据库中的视图一样),其中包含以下字段:
"ID" "BalAmount if Amount Type=20" "BalAmount if Amount Type=21" "BalAmount if Amount Type=22"
234 94 102 100
212 40 50 60
请帮我为这个派生表编写SQL,(Database is DB2)?
答案 0 :(得分:2)
派生表只不过是常规SELECT:
SELECT
ID,
MAX(CASE WHEN amount_type=20 THEN balamount END) type_20_amt,
MAX(CASE WHEN amount_type=20 THEN balamount END) type_21_amt,
MAX(CASE WHEN amount_type=20 THEN balamount END) type_22_amt
FROM
table
GROUP BY
ID
编辑在评论时添加: 需要max()函数才能将所有值放在一行上。使用问题中的示例数据,查询不带 max()将产生:
id type_20_amt type_21_amt type_22_amt
-- ----------- ----------- -----------
234 94
234 102
234 100
212 40
212 50
212 60
然而,使用max()将它们放在一行:
id type_20_amt type_21_amt type_22_amt
-- ----------- ----------- -----------
234 94 102 100
212 40 50 60