我需要从多个表中获取数据,但这里有一些场景是重新创建问题的测试脚本
create table sub_test (sub_id number);
create table sub_svc_test (sub_id number, sub_svc_id number);
create table sub_svc_parm_test (sub_svc_id number, parm_id number, val varchar2(20) );
insert into sub_test values (100);
insert into sub_test values (101);
insert into sub_test values (102);
insert into sub_svc_test values (100,1001);
insert into sub_svc_test values (100,1002);
insert into sub_svc_test values (101,1005);
insert into sub_svc_test values (101,1006);
insert into sub_svc_test values (101,1007);
insert into sub_svc_test values (102,1009);
insert into sub_svc_test values (102,1010);
insert into sub_svc_parm_test values (1001, 51, 'test_id');
insert into sub_svc_parm_test values (1001, 53, 'no');
insert into sub_svc_parm_test values (1002, 54, 'max');
insert into sub_svc_parm_test values (1005, 51, 'test_id');
insert into sub_svc_parm_test values (1007, 51, 'test_id');
insert into sub_svc_parm_test values (1007, 54, 'min');
我需要从sub_svc_parm_test表中获取特定parm_id的VAL列的值,以便
select * from sub_svc_test ss, sub_svc_parm_test ssp
where ss.sub_svc_id = ssp.sub_svc_id and parm_id = 51;
此查询将为我提供51 parm_id的VAL现在我需要创建一个视图,它将显示parm_id 51,54的VAL,但是在不同的列中,如
select ssp.val, ssp1.val
from sub_svc_test ss, sub_svc_parm_test ssp, sub_svc_test ss1,
sub_svc_parm_test ssp1
where ss.sub_svc_id = ssp.sub_svc_id
and ssp.parm_id = 51
and ssp1.parm_id = 54
and ss1.sub_svc_id = ssp1.sub_svc_id;
这个查询会给我输出,但它也执行交叉连接,因为我没有加入sub_svc_test ss和sub_svc_test ss1所以它给了我6行2 * 3 但要求是它应该向我显示任何列的MAX行,在我们的例子中它是第一列(3行),剩下的没有数据的行可以包含任何字符串或只是在其中为null
VAL VAL_1
-------------- -------------
test_id max
test_id min
test_id null
我正在使用----
Oracle Database 11g企业版11.2.0.3.0版 - 64位生产
请询问任何澄清
由于
答案 0 :(得分:0)
所以你实际上想要执行两个单独的选择并将它们显示在彼此旁边。
也许这样的事情可行:
select val, val1 from (
(select rownum as r, val as val from sub_svc_parm_test ssp1 where parm_id = 51)
full outer join
(select rownum as r1, val as val1 from sub_svc_parm_test ssp2 where parm_id = 54)
on r = r1
)