【问题标题】:subquery uses ungrouped column "omt.actualendtime" from outer query子查询使用来自外部查询的未分组列“omt.actualendtime”
【发布时间】:2019-03-07 06:03:01
【问题描述】:

下面是查询

SELECT omt.actualendtime::date,
       (SELECT array_to_json(array_agg(row_to_json(t)))
        FROM (SELECT odt.productshortname,
                     count(odt.*) 
              FROM orderdetail_runtime_tran odt 
              WHERE odt.actualendtime::date = omt.actualendtime::date
                AND odt.stagename = 'Ironing'
              GROUP BY odt.productshortname
             ) t
       ) as item_current_count
From orderdetail_runtime_tran omt
WHERE omt.actualendtime IS NOT NULL AND date_part('year', omt.actualendtime) = '2019'
  AND omt.stagename = 'Ironing'
GROUP BY omt.actualendtime::date;

此查询出错

子查询使用来自外部查询的未分组列“omt.actualendtime”

【问题讨论】:

  • Edit 您的问题并添加一些示例数据和预期结果。应该有一种更好、更简单的方法来完成您最终想要实现的目标,而不是修复该错误。
  • 我不认为样本数据会产生影响,但表定义会有所帮助。
  • 是的,两者都提供会更好。

标签: sql postgresql


【解决方案1】:

尝试使用子查询:

SELECT actualenddate,
       (SELECT array_to_json(array_agg(row_to_json(t)))
        FROM (SELECT odt.productshortname, count(odt.*) 
              FROM orderdetail_runtime_tran odt 
              WHERE odt.actualendtime::date = actualenddate AND
                    odt.stagename = 'Ironing'
              GROUP BY odt.productshortname
             ) t
       ) as item_current_count
FROM (SELECT omt.*,
             omt.actualendtime::date as actualenddate
      FROM orderdetail_runtime_tran omt
      WHERE omt.actualendtime IS NOT NULL AND 
            date_part('year', omt.actualendtime) = '2019' AND
            omt.stagename = 'Ironing'
     ) omt
GROUP BY actualenddate;

【讨论】:

    猜你喜欢
    • 2020-10-08
    • 1970-01-01
    • 2020-10-20
    • 1970-01-01
    • 2020-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多