Use of CASE expression values in THEN expression
13:03 29 Jul 2010

I am attempting to use a case expression but keep getting errors. Here's the statement:

select TABLE1.acct,
        CASE
          WHEN TABLE1.acct_id in (select acct_id 
                                    from TABLE2 
                                group by acct_id 
                                  having count(*) = 1 ) THEN
             (select name 
                from TABLE3 
               where TABLE1.acct_id = TABLE3.acct_id)
          ELSE 'All Others'
        END as Name
   from TABLE1

When I replace the TABLE1.acct_id in the THEN condition with a literal value, the query works. When I try to use TABLE1.acct_id from the WHEN part of the query, I get a error saying the result is more than one row. It seems like the THEN condition is ignoring the single value that the WHEN condition was using. No idea, maybe this isn't even a valid use of the CASE expression.

I am trying to see names for accounts that have one entry in TABLE2.

sql db2 case