一聚教程网:一个值得你收藏的教程网站

热门教程

sql union 查询实现复杂查询

时间:2022-07-02 21:20:57 编辑:袖梨 来源:一聚教程网

UNION查询,让您结合2个或更多的“选择”查询的结果集。它消除了各种“选择”报表之间的重复行。

每个内部查询的SQL语句必须在结果中相同的字段数套类似的数据类型。

UNION查询的语法是:

 代码如下 复制代码
select field1, field2, . field_n
from tables
UNION
select field1, field2, . field_n
from tables;


Example #1

The following is an example of a UNION query:

 代码如下 复制代码

select supplier_id
from suppliers
UNION
select supplier_id
from orders;

在这个例子中,如果supplier_id出现在供应商和订单表,它会出现在您的结果集一次。会删除重复内容。

例#2 - ORDER BY子句

下面是一个UNION查询,使用ORDER BY子句

 

 代码如下 复制代码
select supplier_id, supplier_name
from suppliers
where supplier_id > 2000
UNION
select company_id, company_name
from companies
where company_id > 1000
ORDER BY 2;

问:我需要比较两个日期和返回日期值的基础上的一个字段计数。例如,我在一个表的日期字段称为最后更新日期。我要检查,如果TRUNC(last_updated_date> = TRUNC(SYSDATE- 13)。

答:由于您使用的是这是一个聚合函数COUNT函数,我们建议你使用UNION查询。例如,你可以尝试以下方法:

 代码如下 复制代码

SELECT a.code as Code, a.name as Name, count(b.Ncode)
FROM cdmaster a, nmmaster b
WHERE a.code = b.code
 and a.status = 1
 and b.status = 1
 and b.Ncode <> 'a10'
 and trunc(last_updated_date) <= trunc(sysdate-13)
group by a.code, a.name
UNION
SELECT a.code as Code, a.name as Name, count(b.Ncode)
FROM cdmaster a, nmmaster b
WHERE a.code = b.code
 and a.status = 1
 and b.status = 1
 and b.Ncode <> 'a10'
 and trunc(last_updated_date) > trunc(sysdate-13)
group by a.code, a.name;

热门栏目