(oracle)在DECODE中的SELECT(返回多行)

Dzh*_*ara 2 sql oracle decode

我正在尝试用里面的SELECT编写一个DECODE语句,它看起来像这样:

SELECT DECODE(A.name, (SELECT name FROM B WHERE id IN (1000,1001)),'Value1','Value2') FROM A
Run Code Online (Sandbox Code Playgroud)

显然,如果我在DECODE中的select语句返回多行,我将得到一个异常"ORA-01427:单行子查询返回多行".这是公平的.

我希望在那里获得多行,这就是目的,我需要为所有匹配A.name和Value2的项显示Value1.像foreach循环一样但在DECODE中.

这样做的正确方法是什么?

更新:表A:

+--------------+--------+
|Surname       | Name   |
+--------------+--------+
|           Abc| John   |
|         Smith| Piter  |
|          Cook| Ann    |
+--------------+--------+
Run Code Online (Sandbox Code Playgroud)

表B:

+--------------+--------+
|ID           | Name   |
+--------------+--------+
|         1000| John   |
|         1001| Piter  |
|         2003| Ann    |
+--------------+--------+
Run Code Online (Sandbox Code Playgroud)

我期待看到的:

值1

值1

值2

小智 5

在这种情况下,您可以使用CASE语句:

SELECT 
   CASE WHEN 
          a.name in (select name from b where id in (1000, 1001)) then 'Value1' 
         ELSE 'Value2' 
   END 
 FROM a;
Run Code Online (Sandbox Code Playgroud)