我想过滤掉从两个不同查询中获得的结果并获得总计数。以下是我的两个问题:
Query 1
select count(*)
from table1 oow
where oow.status='completed'--134 records
Query 2
select count(*)
from table2 oow
join #temp re
on oow.order=re.order
where oow.status='completed'--77 records
期望的结果是减去两个I.e.,134-77 = 57。 我如何在sybase中实现这一目标。
答案 0 :(得分:2)
给定表别名oow我将假设query1中的table1和query2中的table2实际上是同一个表。如果是这种情况,你可以这样做:
select count(*)
from
table2 oow
left join #temp re
on oow.order=re.order
where oow.status='completed'
and re.order is null
我使用左连接和检查null而不是执行减法。
答案 1 :(得分:1)
使用Cross Join
SELECT fst - scd
FROM (SELECT Count(*) AS fst
FROM table1 oow
WHERE oow.status = 'completed'),--134 records
(SELECT Count(*) AS scd
FROM table2 oow
JOIN #temp re
ON oow.ORDER = re.ORDER
WHERE oow.status = 'completed')
答案 2 :(得分:1)
试试这个:
select count(*)
from table1
where not exists
(select 1
from #temp re
where re.order = order and status = 'Completed')
此查询仅返回table1中存在但在#temp中不存在的那些行,具体取决于订单值和过滤条件。因此,上述内容相当于获取总计数,过滤计数和两者之间的差异。
答案 3 :(得分:0)
试试这个:
SELECT
(select count(*)
from table1 oow
where oow.status='completed')
-
(select count(*)
from table2 oow
join #temp re
on oow.order=re.order
where oow.status='completed')