将两个 SQL 查询合并为一个查询的最佳方法
Best way to merge two SQL queries into one query
我有两个小的 SQL 查询,我想将它们合并为一个查询,最终将在存储过程中使用。我尝试了 CASE 和 IF/ELSE 但无法正常工作。下面是代码。我想要实现的是第一列 'Count of Open Order Lines' 基于两个查询的 where 语句,而第二列 'Sum Quantity' 仅基于第二个查询的 where 语句。
select
COUNT(OO.ORNO) AS 'Count of Open Order Lines'
from OOLINE OO
join OOHEAD OH
on OO.CONO = OH.CONO
and OO.ORNO = OH.ORNO
where OO.ORST BETWEEN 22 AND 66
and OH.OBLC BETWEEN 1 AND 8;
select
CAST(SUM(OO.ORQT) AS DECIMAL (8,0)) AS 'Sum Quantity'
from OOLINE OO
join OOHEAD OH
on OO.CONO = OH.CONO
and OO.ORNO = OH.ORNO
where OO.ORST BETWEEN 22 AND 66;
您需要条件聚合:
SELECT COUNT(CASE WHEN OH.OBLC BETWEEN 1 AND 8 THEN OO.ORNO END) AS "Count_of_Open_Order_Lines",
CAST(SUM(OO.ORQT) AS DECIMAL (8,0)) AS Sum_Quantity
FROM OOLINE OO INNER JOIN OOHEAD OH
ON OO.CONO = OH.CONO AND OO.ORNO = OH.ORNO
WHERE OO.ORST BETWEEN 22 AND 66;
在 WHERE
子句中,我只保留了条件 OO.ORST BETWEEN 22 AND 66
,这在两个查询中都很常见,对于 Count of Open Order Lines
,我使用了一个基于条件 CASE
的表达式 OH.OBLC BETWEEN 1 AND 8
.
我有两个小的 SQL 查询,我想将它们合并为一个查询,最终将在存储过程中使用。我尝试了 CASE 和 IF/ELSE 但无法正常工作。下面是代码。我想要实现的是第一列 'Count of Open Order Lines' 基于两个查询的 where 语句,而第二列 'Sum Quantity' 仅基于第二个查询的 where 语句。
select
COUNT(OO.ORNO) AS 'Count of Open Order Lines'
from OOLINE OO
join OOHEAD OH
on OO.CONO = OH.CONO
and OO.ORNO = OH.ORNO
where OO.ORST BETWEEN 22 AND 66
and OH.OBLC BETWEEN 1 AND 8;
select
CAST(SUM(OO.ORQT) AS DECIMAL (8,0)) AS 'Sum Quantity'
from OOLINE OO
join OOHEAD OH
on OO.CONO = OH.CONO
and OO.ORNO = OH.ORNO
where OO.ORST BETWEEN 22 AND 66;
您需要条件聚合:
SELECT COUNT(CASE WHEN OH.OBLC BETWEEN 1 AND 8 THEN OO.ORNO END) AS "Count_of_Open_Order_Lines",
CAST(SUM(OO.ORQT) AS DECIMAL (8,0)) AS Sum_Quantity
FROM OOLINE OO INNER JOIN OOHEAD OH
ON OO.CONO = OH.CONO AND OO.ORNO = OH.ORNO
WHERE OO.ORST BETWEEN 22 AND 66;
在 WHERE
子句中,我只保留了条件 OO.ORST BETWEEN 22 AND 66
,这在两个查询中都很常见,对于 Count of Open Order Lines
,我使用了一个基于条件 CASE
的表达式 OH.OBLC BETWEEN 1 AND 8
.