【问题标题】:DB2 IBM - Sub query not reading aggregated columnDB2 IBM - 子查询不读取聚合列
【发布时间】:2021-01-25 16:22:00
【问题描述】:

使用 Group by 子句时,我无法显示 Total_Quantity_Order。运行下面的脚本时,我没有收到任何错误,但没有显示总计列。

我正在使用子查询来显示订单的总数量。

总数量是每个订单行的数量之和。我创建了一个子查询,因为由于所选字段的数量,group by 语句会很长。

SELECT
  A.ORDER AS ORDER, 
  A.LINE AS LINE, 
  *FIELD3*
  ...
  ...
  *FIELD55*
  FIELD56 AS QUANTITY
FROM TABLE1.A A 
LEFT JOIN (
  SELECT A.ORDER AS ORDER, 
    SUM(FIELD56) AS TOTAL_QUANTITY_BY_ORDER
  FROM TABLE1.A A 
  GROUP BY A.ORDER
) X ON A.ORDER = X.ORDER
WHERE A.ORDER = '140'

【问题讨论】:

    标签: sql group-by db2 subquery


    【解决方案1】:

    在外部选择中,您将获得 FIELD56 AS QUANTITY,但您将总数(在子查询 X 中)别名为 SUM(FIELD56) AS TOTAL_QUANTITY_BY_ORDER

    据我所知,您实际上并没有在整体选择中显示 TOTAL_QUANTITY_BY_ORDER 字段。请注意,Field56 仍将被报告,因为它存在于 Table1 中(例如,它将是 A.Field56)。

    应该是这样的

    A.LINE AS LINE, 
        *FIELD3*
        ...
        ...
        *FIELD55*
        FIELD56 AS QUANTITY,
        X.TOTAL_QUANTITY_BY_ORDER    -- Added this row
    FROM TABLE1.A A 
        LEFT JOIN 
            (SELECT A.ORDER AS ORDER, 
                SUM(FIELD56) AS TOTAL_QUANTITY_BY_ORDER
              FROM TABLE1.A A 
              GROUP BY A.ORDER
            ) X ON A.ORDER=X.ORDER
    WHERE A.ORDER ='140'
    

    请注意,这(以及您在问题中的尝试)将为 Table1 中适合您的 WHERE 子句(A.ORDER = '140')的每一行返回 1 行 - 而不是每个订单一行。但是,每一行都会包含包含在其中的订单的总 fpr。

    【讨论】:

      猜你喜欢
      • 2016-10-07
      • 2019-06-13
      • 1970-01-01
      • 1970-01-01
      • 2018-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-06
      相关资源
      最近更新 更多