DB2 IBM -子查询未阅读聚合列

voase2hg  于 2022-11-07  发布在  DB2
关注(0)|答案(2)|浏览(185)

使用Group by子句时,我无法显示Total_Quantity_Order。运行下面的脚本时,我没有收到任何错误消息,但包含合计的列没有显示。
我使用子查询来显示订单的总数量。
总数量是每个订单行的数量之和。我创建了一个子查询,因为由于所选字段的数量,groupby语句会很长。

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'

nhjlsmyf

nhjlsmyf1#

在外部select语句中,您得到的是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行,而不是为每个订单返回一行。但是,每一行都将包含订单的合计。

nmpmafwu

nmpmafwu2#

如果**@seanb的回答没有解决您的问题,下面是我的理解:
包含列
TOTAL_QUANTITY_BY_ORDER的表X不需要与表A进行JOIN**,因为表X的每一行只包含相同的固定值。
也就是说,查询将是这样的:

SELECT
    ...
    X.TOTAL_QUANTITY_BY_ORDER
FROM TABLE1.A A,
    (SELECT SUM(FIELD56) AS TOTAL_QUANTITY_BY_ORDER
        FROM TABLE1.A A
    ) X
WHERE A.ORDER = '140'

相关问题