我有这个问题:
select BUnit, value from myTable where BUnit in (555,556,557,558)
并且Bunit的这些值是动态构造的,即。程序按需构建查询,并不总是选择这些数字。
可能的查询结果是
Bunit value
556 10.2
558 5.18
但是,我想构造一个select语句来返回
Bunit value
556 10.2
558 5.18
555 NULL
557 NULL
我不允许创建表(临时或非临时)并创建过程。我该怎么办?
答案 0 :(得分:1)
您可以使用条件构建一个表,并加入:
select criteria.BUnit, t.value
from (
select 555 as BUnit from dual
union select 556 from dual
union select 557 from dual
union select 558 from dual
) criteria
left join myTable t
on t.BUnit = criteria.BUnit
答案 1 :(得分:0)
没有临时表,你不能,因为你必须找到一种方法将BUnit
的所有值放入某种表中,然后加入myTable
对该表来获取{ {1}}值。
您可以在应用中动态生成SQL并发送如下内容:
NULL
但在尝试此操作之前,我建议您在应用中创建所需的结果结构,然后填写从数据库中获取的值。