如何使用CASE子句(DB2)显示来自其他表的值?

时间:2018-07-23 16:22:08

标签: db2 case

我在银行工作,所以我不得不调整查询中的列名和信息以适合外部网络,因此,如果有任何奇怪的错误,那就知道它会很好。

我正在尝试使用CASE子句来显示其他表中的数据,我知道这是一种解决方法,但是由于某些情况,我不得不使用它,而且弄清楚是否存在一个实际解决方案。

我收到以下查询的错误是:

  

“错误[21000] [IBM] [CLI驱动程序] [DB2] SQL0811N标量的结果   fullselect,SELECT INTO语句或VALUES INTO语句更多   多于一排。”

select  bank_num, branch_num, account_num, client_id,
CASE
    WHEN exists(
        select *
        from bank.services BS
        where ACCS.client_id= BS.sifrur_lakoach
        )

    THEN (select username from bank.services BS where BS.client_id = ACCS.client_id)
        ELSE 'NONE'
            END username_new
from bank.accounts accs
where bank_num = 431 and branch_num = 170

编辑: AFAIK我们正在使用DB2 v9.7: DSN11015-DB21085I实例“ DB2”使用“ 64”位,并且DB2代码版本“ SQL09075”具有 级别标识符“ 08060107”。 信息性令牌是“ DB2 v9.7.500.702”,“ s111017”,“ IP23287”和修订包“ 5”。

1 个答案:

答案 0 :(得分:0)

使用listagg函数包含所有结果。

select  bank_num, branch_num, account_num, client_id,
CASE
    WHEN exists(
        select *
        from bank.services BS
        where ACCS.client_id= BS.sifrur_lakoach
        )
    THEN (select   LISTAGG(username, ', ') from bank.services BS
         where BS.client_id = ACCS.client_id)
        ELSE 'NONE'
            END username_new
from bank.accounts accs
where bank_num = 431 and branch_num = 170
相关问题