开发者

Including not found criteria in the result

开发者 https://www.devze.com 2022-12-10 05:39 出处:网络
I have this query: selectBUnit, value f开发者_开发知识库rom myTable where BUnit in (555,556,557,558)

I have this query:

select  BUnit, value f开发者_开发知识库rom myTable where BUnit in (555,556,557,558)

and these values for Bunit are constructed dynamically, ie. a program builds queries on demand, and they won't always select these numbers.

A possible query result would be

Bunit            value
556              10.2
558              5.18  

However, I would like to construct a select statement to return

Bunit            value
556              10.2
558              5.18  
555              NULL
557              NULL

I am not allowed to create tables (temporary or not) and to create procedures. How can I do it?


You can build a table with the criteria, and join on that:

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


Without a temporary table, you can't since you must find a way to put all the values of BUnit into a table of some kind and then join myTable against that table to get the NULL values.

You could generate the SQL dynamically in your app and send down something like this:

select 555, (select value from myTable where BUnit = 555)
from dual
union
select 556, (select value from myTable where BUnit = 556)
from dual
...

But before you attempt this, I suggest that you create the desired result structure in your app and then fill in the values you get from the database.

0

精彩评论

暂无评论...
验证码 换一张
取 消