2014-01-07 191 views
0

我想汇总一些结果,但我没有任何运气。下面是我使用的SQL与实际输出:它生产这个数据从SQL结果汇总结果

SQL语句:

SELECT 
    i.inventory_item_id, 
    i.organization_id, 
    sum(primary_transaction_quantity) as on_hand_qty 
FROM mtl_onhand_quantities_detail oqd, mtl_system_items_b i 
WHERE oqd.inventory_item_id = i.inventory_item_id 
    AND oqd.inventory_item_id = 117567 -- just used to restrict results for this example 
    AND i.organization_id = :p_organization_id 
    AND oqd.organization_id = i.organization_id 
GROUP BY i.inventory_item_id, i.organization_id, primary_transaction_quantity 


INVENTORY_ITEM_ID,ORGANIZATION_ID,ON_HAND_QTY 
117567,7651,2 
117567,7651,1 

我需要什么返回:

INVENTORY_ITEM_ID,ORGANIZATION_ID,ON_HAND_QTY 
117567,7651,3 

基本上,它需要总结的on_hand_qty并且只返回一个结果行,如果inventory_item_idorganization_id是相同的。任何帮助是极大的赞赏!从组

+0

什么是:p_organization_id? – Zane

+1

您还使用了哪些DBMS? – Zane

+0

:p_organization_id是您如何在Oracle中定义用户可以在报表运行时输入的参数。它们输入的值被替换,其中:p_organization_id在代码中。 – Jedis

回答

0

删除primary_transaction_quantity by子句

4

好了,让你有主要的问题是,你在你的GROUP BY所以您的查询应该是这样的包含您的累计声明。

SELECT 
    i.inventory_item_id, 
    i.organization_id, 
    sum(primary_transaction_quantity) as on_hand_qty 
FROM mtl_onhand_quantities_detail oqd, mtl_system_items_b i 
WHERE oqd.inventory_item_id = i.inventory_item_id 
    AND oqd.inventory_item_id = 117567 -- just used to restrict results for this example 
    AND i.organization_id = :p_organization_id 
    AND oqd.organization_id = i.organization_id 
GROUP BY i.inventory_item_id, i.organization_id 

不知道,如果你通过对谷歌你应该找到很多解释它是如何工作的查找组您所使用但什么DBMS。

现在让我们继续下一个问题。您正在使用pre ansi-92连接语法。这是bad

你的代码应该看起来像这样。

SELECT 
    i.inventory_item_id, 
    i.organization_id, 
    sum(primary_transaction_quantity) as on_hand_qty 
FROM mtl_onhand_quantities_detail oqd 
INNER JOIN mtl_system_items_b i 
    ON oqd.inventory_item_id = i.inventory_item_id 
    AND oqd.organization_id = i.organization_id 
    AND i.organization_id = :p_organization_id --Added back the function now that I know it isn't a typo 
WHERE 
    oqd.inventory_item_id = 117567 -- just used to restrict results for this example 
GROUP BY i.inventory_item_id, i.organization_id 
+0

非常感谢。我使用Oracle作为DBMS。 不幸的是,这只是报告的一个非常小的子集,它使用了较旧的连接语法。为了保持整个报告的一致性,我保持这种状态。我不知道如何改写其余部分以使用其他方式? – Jedis

+0

这可能很困难,但从长远来看,这是正确的方式。如果你有时间,我强烈建议转换旧的代码。如果没有别的,这是很好的做法。 :) – Zane