简体   繁体   English

Oracle SQL动态查询

[英]Oracle SQL Dynamic Query

I have 2 tables in my Database: 我的数据库中有2个表:

在此处输入图片说明

在此处输入图片说明

I am trying to create a Query that should take in as a variable parameter " id3 " so for example - 我正在尝试创建一个应作为变量参数“ id3 ”使用的查询,例如-

Q(z0) should produce Q(z0)应该产生

在此处输入图片说明

Thanks in Advance! 提前致谢!

Oracle queries can take parameter in 2 forms one is ANSI sql binding [inform of ?] and other is Oracle Style binding [in form of :1]. Oracle查询可以采用两种形式的参数,一种是ANSI sql绑定[?的信息],另一种是Oracle样式绑定[以:1的形式]。

So your query can be : 因此,您的查询可以是:

    Select * from table1 a, table2 b where a.id1 = b.id1 
and a.id2 = b.id2 and id3 = :1

If I understand you correctly then 如果我正确理解你的话

SELECT * FROM TAB1 I
         JOIN TAB2 II ON I.id1 = II.id1 and I.id2 = II.id2
WHERE I.id3 = 'z0' 

Should produce the result you require, you may need a "LEFT OUTER JOIN " if TAB2 is incomplete. 应该产生所需的结果,如果TAB2不完整,则可能需要“ LEFT OUTER JOIN”。

So assuming the 'A','B','C' are known the query is 因此,假设已知“ A”,“ B”,“ C”,则查询为

    With extra_cols as(
                    SELECT * FROM (
                                    SELECT * FROM Table2 WHERE id1 = (
                                                                      SELECT id1 FROM TABLE1 WHERE id3 = 'z0'
                                                                      ) 
                                                          AND  id2 = (
                                                                      SELECT id2 FROM TABLE1 WHERE id3 = 'z0'
                                                                      )
                                  )
                  PIVOT (STR(VALUE_1) for FIXED_COL in ('A','B','C')) 
                )
SELECT * from table1 left join extra_cols on table1.id1 = extra_cols.id1 AND table1.id2 = extra_cols.id2
WHERE TABLE1.id3 = 'z0'

The 'A' , 'B' , 'C' String can be extracted from 可以从中提取“ A”,“ B”,“ C”字符串

SELECT FIXED_COL AS Names FROM Table2 WHERE Table2.id1=(SELECT id1 FROM TABLE1 WHERE id3 = 'z0') AND Table2.id2=(SELECT id2 FROM TABLE1 WHERE id3 = 'z0')

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM