派生表(视图)是必需的

时间:2013-12-13 10:55:11

标签: db2 business-objects

我在数据库中有以下表格:

"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)?

1 个答案:

答案 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