将两个 SQL 查询合并为一个查询的最佳方法

时间:2021-07-19 18:02:04

标签: sql count sum case

我有两个小的 SQL 查询,我想将它们合并为一个最终将在存储过程中使用的查询。我尝试过 CASE 和 IF/ELSE,但无法使其正常工作。下面是代码。我想要实现的是第一列“未结订单行数”基于两个查询的 where 语句,但第二列“总和数量”仅基于第二个查询的 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;

1 个答案:

答案 0 :(得分:0)

您需要条件聚合:

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,我使用了基于条件 {{1} 的 CASE 表达式}}.