【发布时间】:2017-03-27 11:10:23
【问题描述】:
查询运行良好,但是当我添加 group by 时,它给了我 [Error] ORA-01427 here is main query
SELECT DISTINCT Contract_number,
area_number,
area_name,
ADVANCE_PAY,
Postponed_Amount,
extract_number,
total
FROM (SELECT xxr.Contract_num Contract_number,
xxr.p_area_no area_number,
xxr.p_area_name area_name,
xxr.ADVANCE_PAY ADVANCE_PAY,
xxr.DEFERRED_BOOST Postponed_Amount,
xxr.release_num extract_number,
这是案例陈述:
(SELECT DISTINCT
CASE
WHEN :p_item_code IS NOT NULL
THEN
TOTAL_AMOUNT
WHEN :p_item_code IS NULL
THEN
( (SELECT NVL (SUM (TOTAL_AMOUNT), 0)
FROM XXEXTRACT.XXNATGAS_REALSES_LINES
WHERE XXEXTRACT.XXNATGAS_REALSES.release_id =
XXEXTRACT.XXNATGAS_REALSES_LINES.release_id))
ELSE
NULL
END
FROM XXEXTRACT.XXNATGAS_REALSES_LINES xxrl,
XXEXTRACT.XXNATGAS_REALSES
WHERE 1 = 1
AND xxrl.release_id =
XXEXTRACT.XXNATGAS_REALSES.release_id)
AS total
这是来自的部分:
FROM XXEXTRACT.XXNATGAS_REALSES_LINES xxrl,
XXEXTRACT.XXNATGAS_REALSES xxr
WHERE 1 = 1
AND xxrl.release_id = xxr.release_id
AND xxr.release_date >= NVL (:p_date_from, xxr.release_date)
AND xxr.release_date <= NVL (:p_date_to, xxr.release_date)
AND xxr.Contract_num = NVL (:p_cont_num, xxr.Contract_num)
AND xxr.vendor_id = NVL (:p_ven_id, xxr.vendor_id)
AND xxr.vendor_site_id = NVL (:p_site_id, xxr.vendor_site_id)
)
这是分组:
GROUP BY Contract_number,
area_number,
area_name,
ADVANCE_PAY,
Postponed_Amount,
extract_number,
total;
这些是完整的查询,所以请任何帮助
【问题讨论】:
-
也许你应该问另一个问题,包括样本数据、期望的结果以及你想要做什么的解释。
-
显示完整的查询,而不仅仅是部分。顺便说一句,
DISTINCT和GROUP BY都这样做,儿子只需要其中一个。 -
如果用户输入特定参数(总金额是列名),我想获取总金额,如果用户输入任何参数,我想获取总金额的总和
-
@dnoeth 我已经准备好只使用 group by,它给了我同样的错误
-
正如您所说,您收到错误 ORA-01427,这意味着您的子查询结果返回多行。即你的case语句应该只返回一行
标签: sql oracle group-by case where