select
UNIT,
NBR,
ODE,
ANS,
IT,
UNIT,
ESC,
DATE1,
DATE2,
CD,
CD2,
CD3,
TRANS
from Jblog
where UNIT = 'Alaska'
AND DATE1 > 0 and
DATE2 > 0
AND ODE = '67342'
AND NBR = '50952'
select
UNIT,
TRANS,
ELER,
ELER_DATE,
ELERDATE2,
TRANS
from JBLOG
where unit = 'ALASKA'
AND ELER <> ' '
and ELERDATE > 0 and
ELERDATE2 > 0
and ELER = '5201'
select
UNIT,
TRANS,
LNT,
LNT_MIN,
LNT_MAX,
LNT_D,
LNT_DATE1,
LNT_DATE2,
LNT_DATE3,
LNT_AL,
TRANS
from JBLOG
where UNIT = 'ALASKA'
AND LNT_DATE <> 0
AND LNT_DATE2 > 0 and
LNT_DATE3> 0
AND LNT_D = '0064'
我希望能够将所有这些查询组合在一起并将其作为一个查询运行。数据 是不同的所以,如果我直接组合它们并且有一个很长的地方 带有一堆ands的条款我没有得到任何结果,因为排除 将使它不返回任何数据。但是,当我单独运行它时,我得到了所需的结果。我尝试过工会但是没有完全解决,有没有人有解决方案?提前致谢
答案 0 :(得分:1)
从表中选择相同顺序的所有列并使用union来合并它们会产生所需的结果。
答案 1 :(得分:0)
UNION
应解决您的问题,但请注意UNION
要求要合并的查询必须返回相同的属性序列(关于名称和类型)。
因此,当将上述查询与UNION
组合时,每个查询都必须选择相同的属性序列;如果特定查询中的特定属性没有意义,即使您选择了默认值,也必须提供它们。
例如,以下查询应该有效:
select a, b, NULL as c
from table1
where a>5
union
select a, NULL as b, c
from table1
where a<=5
而以下查询没有:
select a, b
from table1
where a>5
union
select a, c
from table1
where a<=5
答案 2 :(得分:0)
必须有某种钥匙才能加入。选择创建唯一项密钥的任何字段,并对这些字段上的每个查询执行LEFT JOIN到主列表。
由于您的查询已过滤掉,并且不一定会为所有内容提供正确的联接,因此请在选择所有内容的查询中添加另一个级别,而不使用任何过滤器,以便您可以将所有内容加入其中:
select *
from
(select UNIT /*or key whatever*/ from Jblog) all_units
LEFT JOIN
(.....) a
ON a.unit = all_units.unit
LEFT JOIN
(.....) b
ON b.unit = all_units.unit
LEFT JOIN
(.....) c
ON c.unit = all_units.unit
其中a,b和c是您列出的3个查询