嗨
我有这个声明,从大数据库中选择数量和产品数量的总和
SELECT
(SELECT Name FROM AD_Org WHERE AD_Org_ID = 1000001
) AS Org,
(SELECT bp.Name FROM C_BPartner bp WHERE bp.C_BPARTNER_ID = 0
) AS Selected_Vendor,
(SELECT MAX(bp.Name)
FROM C_BPartner bp
WHERE EXISTS
(SELECT 1
FROM M_Product_PO po
WHERE bp.C_BPARTNER_ID =po.C_BPARTNER_ID
AND po.M_PRODUCT_ID = p.M_PRODUCT_ID
AND po.ISCURRENTVENDOR ='Y'
AND AD_Org_ID = 1000001
)
) AS Vendor,
p.Value AS Value_Product,
p.Name AS Name_Product,
COALESCE( SUM(ol.QTYORDERED) , 0) AS qty_bought ,
COALESCE( SUM(ol.LINENETAMT) , 0) AS Amount_bought ,
COALESCE( SUM(ol2.QTYORDERED) , 0) AS qty_sales ,
COALESCE( SUM(ol2.LINENETAMT) , 0) AS Amount_sales,
bomOffQtyOnHand(p.M_PRODUCT_ID,
(SELECT NVL(M_WAREHOUSE_ID,0) FROM AD_OrgInfo WHERE AD_Org_ID = 1000001
), NULL) AS STOCK,
(SELECT Name FROM M_PRODUCT_CATEGORY pc WHERE pc.M_PRODUCT_CATEGORY_ID =0
) AS Product_Category
FROM M_Product p
LEFT OUTER JOIN C_OrderLine ol
ON (p.m_product_id = ol.m_product_id)
INNER JOIN C_Order o
....
....
WHERE (p.M_PRODUCT_CATEGORY_ID =0
....
....
)
ORDER BY p.value,
p.Nam
这句话给我总是小组功能错误
ORA-00937: not a single-group group function
当我把这些行修复它时,它会错误地给另一个组
GROUP BY SUM(ol.QTYORDERED) ,
SUM(ol.LINENETAMT),
SUM(ol2.QTYORDERED),
SUM(ol2.LINENETAMT),
p.Value,
p.name
错误
ORA-00934: group function is not allowed here
我想我必须将所有选定的项目放入群组中,以便我如何将此
(SELECT Name FROM AD_Org WHERE AD_Org_ID = 1000001
) AS Org,
或者
(SELECT MAX(bp.Name)
FROM C_BPartner bp
WHERE EXISTS
(SELECT 1
FROM M_Product_PO po
WHERE
....
AND AD_Org_ID = 1000001
)
) AS Vendor,
在group by
或任何其他方法来修复此错误
答案 0 :(得分:0)
您在此处与SUM汇总:
COALESCE( SUM(ol.QTYORDERED) , 0) AS qty_bought ,
COALESCE( SUM(ol.LINENETAMT) , 0) AS Amount_bought ,
COALESCE( SUM(ol2.QTYORDERED) , 0) AS qty_sales ,
COALESCE( SUM(ol2.LINENETAMT) , 0) AS Amount_sales,
所以其他一切(p.Value,p.Name,p.M_PRODUCT_ID)也必须在GROUP BY子句中,或者也要聚合(例如MIN(p.Value))。