在结果中包括未找到的标准

时间:2009-11-06 14:48:18

标签: sql oracle

我有这个问题:

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

我不允许创建表(临时或非临时)并创建过程。我该怎么办?

2 个答案:

答案 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

但在尝试此操作之前,我建议您在应用中创建所需的结果结构,然后填写从数据库中获取的值。