aws红移列“view\u table\u b.cost”必须出现在group by子句中或用于聚合函数

eulz3vhy  于 2021-08-09  发布在  Java
关注(0)|答案(1)|浏览(463)

我在aws redshift中有2个查询,这些查询针对具有相似模式的不同表。但我的问题是,一个查询正在工作,而另一个查询失败。
第一个查询

  1. SELECT view_table_A.accountId, view_table_A.date, SUM(view_table_A.cost) as Cost
  2. FROM view_table_A
  3. GROUP BY accountId, date
  4. HAVING Cost >= '20'


第二个查询

  1. SELECT view_table_B.projectname, view_table_B.usagedate, sum(view_table_B.cost) as Cost
  2. FROM view_table_B
  3. GROUP BY projectname, usagedate
  4. HAVING Cost >= '20'


我的问题是第一个查询运行良好,而第二个查询将返回如下错误
amazon无效操作:列“view\u table\u b.cost”必须出现在group by子句中或在聚合函数中使用;
update-1我试图从查询中删除',但仍然得到相同的结果。我附上了我试图用红移执行的查询的截图。

avwztpqn

avwztpqn1#

红移标识符不区分大小写,因此 cost 以及 Cost 在查询中发生冲突。
我可以用以下方法重现问题:

  1. with src(cost, dat) as (
  2. select 1, current_date
  3. union all
  4. select 2, current_date
  5. )
  6. SELECT
  7. dat,
  8. sum(s.cost) as Cost
  9. FROM src s
  10. GROUP BY dat
  11. HAVING Cost = 3
  12. ;

它给了我
[2020-06-04 11:22:44][42803][500310]amazon无效操作:列“s.cost”必须出现在group by子句中或在聚合函数中使用;
如果将列重命名为不同的名称,则会修复查询:

  1. with src(cost, dat) as (
  2. select 1, current_date
  3. union all
  4. select 2, current_date
  5. )
  6. SELECT
  7. dat,
  8. sum(s.cost) as sum_cost
  9. FROM src s
  10. GROUP BY dat
  11. HAVING sum_cost = 3
  12. ;

我也很惊讶地看到引用标识符 " 没有解决问题-正如我最初所料。

展开查看全部

相关问题