【问题标题】:Eliminate duplicates in PLSQL / Oracle消除 PLSQL / Oracle 中的重复项
【发布时间】:2022-11-22 00:39:28
【问题描述】:

我在构建出现子项的查询时遇到问题。我在下面附上数据和预期的最终结果。 重要的是 SubitemID 不是常量。所以我不能在我的查询中输入“subitemid like itemid+1”之类的东西。 这是我的表:

ItemID SubitemID Category Value
X X1 116113 115
X X2 116113 115
X X1 222540 100
X X2 222540 100
Y Y1 116113 204,58
Y Y2 116113 204,58
Y Y4 222540 500
Y Y5 222540 500

我想对每种类别的值求和。所以结果应该是:

ItemID Category Sum of Value
X 116113 115
X 222540 100
Y 116113 204,58
Y 222540 500

换句话说,我需要对每个类别的 1 行求和,因为每个类别中每个 ItemID 的值都是常量。


编辑: 我的查询如下:

   SELECT ItemID
    ,Category
    ,SUM(CASE WHEN Category = 116113 THEN ROUND(Value,4) else 0 end) as "Summary_cat1"
    ,SUM(CASE WHEN Category = 222540 THEN ROUND(Value,4) else 0 end) as "Summary_cat2"
,SUM(CASE WHEN Category in (116113,222540) THEN ROUND(Value,4) else 0 end) as "Summary_cat3"
    FROM TABLE
    GROUP BY ItemID, Category

预期成绩:

ItemID Category Summary_cat1 Summary_cat2 Summary_cat3
X 116113 115 100 215
X 222540 115 100 215
Y 116113 204,58 500 704,58
Y 222540 204,58 500 704,58

【问题讨论】:

    标签: oracle plsql relational-database plsqldeveloper


    【解决方案1】:

    假设共享相同项目和类别的记录之间的值始终相同,那么这里应该使用不同的查询:

    SELECT DISTINCT ItemID, Category, Value
    FROM yourTable;
    

    另一方面,如果你真的想的值,那么你应该使用:

    SELECT ItemID, Category, SUM(Value) AS SumOfValue
    FROM yourTable
    GROUP BY ItemID, Category;
    

    【讨论】:

    • 谢谢蒂姆。我认为我对问题的解释是错误的。我刚刚编辑了我的帖子以使其更加清晰。它仍然只是我的问题的模型,但比以前更准确。
    猜你喜欢
    • 2012-07-22
    • 2015-11-06
    • 1970-01-01
    • 2020-02-04
    • 2016-02-21
    • 2023-03-10
    • 1970-01-01
    • 2020-02-27
    • 2017-09-21
    相关资源
    最近更新 更多