我正在尝试用里面的SELECT编写一个DECODE语句,它看起来像这样:
SELECT DECODE(A.name, (SELECT name FROM B WHERE id IN (1000,1001)),'Value1','Value2') FROM A
显然,如果我在DECODE中的select语句返回多行,我将得到一个异常“ORA-01427:单行子查询返回多行” . 这是公平的 .
我希望在那里获得多行,这就是目的,我需要为所有匹配A.name和Value2的项显示Value1 . 像foreach循环但在DECODE内 .
这样做的正确方法是什么?
更新:表A:
+--------------+--------+
|Surname | Name |
+--------------+--------+
| Abc| John |
| Smith| Piter |
| Cook| Ann |
+--------------+--------+
表B:
+--------------+--------+
|ID | Name |
+--------------+--------+
| 1000| John |
| 1001| Piter |
| 2003| Ann |
+--------------+--------+
我期待看到的内容:
值1
值1
值2
2 回答
在这种情况下,您可以使用CASE语句:
您可以使用内部联接解决此问题:
结果: