【发布时间】:2017-08-08 09:55:05
【问题描述】:
我有如下查询:
select t1.varid, t1.var1, t1.var2, t1.vardata, t2.varid, t2.var1, t2,.var2
from table1 t1, table2 t2
where t1.varid = t2.varid
and t1.vardata between to_date('20170807','YYYYMMDD') and to_date('20170808','YYYYMMDD')
现在的问题是: 我不仅需要在上面查询中指定的数据范围内提取数据,而且还想在同一个查询中提取许多其他范围内的数据。
为此,我使用了UNION ALL,它可以工作。问题是这部分我得重写很多次:
select t1.varid, t1.var1, t1.var2, t1.vardata, t2.varid, t2.var1, t2, var2
from table1 t1, table2 t2
where t1.varid = t2.varid
是否有关于如何将select t1.varid... 定义为命名变量以避免冗长乏味的重复查询的提示?
欢迎任何其他解决方案。
【问题讨论】:
-
至少不在
SQL。或者,您可以编写一个过程并传递日期范围以获得所需的输出。 -
嗨,XING,我不明白:是否不可能:将(从表中选择 var1、var2、...)定义为名称变量?好像很奇怪……
-
我的意思是,你无法避免长时间无聊
UNION ALL。当您在查询中放置具有不同时间范围的 OR 子句时,还有什么问题。 -
好的,但是如何简化这部分:(select var1, var2,... from table) in other to each union all not rewrite it...
-
检查我的答案。这就是我要问的。如果你像我在下面展示的那样做会有什么问题吗?
标签: oracle plsql union declare