我有两个小的 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;
答案 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
表达式}}.