Sql AWS红移列“;查看“表成本”;必须出现在GROUP BY子句中或在聚合函数中使用

Sql AWS红移列“;查看“表成本”;必须出现在GROUP BY子句中或在聚合函数中使用,sql,group-by,amazon-redshift,Sql,Group By,Amazon Redshift,我在AWS红移中有2个查询,这些查询针对具有相似模式的不同表。但我的问题是,其中一个查询正在运行,而另一个查询失败 第一次查询 SELECT view_table_A.accountId, view_table_A.date, SUM(view_table_A.cost) as Cost FROM view_table_A GROUP BY accountId, date HAVING Cost >= '20' SELECT view_table_B.projectname, view

我在AWS红移中有2个查询,这些查询针对具有相似模式的不同表。但我的问题是,其中一个查询正在运行,而另一个查询失败

第一次查询

SELECT view_table_A.accountId, view_table_A.date, SUM(view_table_A.cost) as Cost 
FROM view_table_A
GROUP BY accountId, date
HAVING Cost >= '20'
SELECT view_table_B.projectname, view_table_B.usagedate, sum(view_table_B.cost) as Cost 
FROM view_table_B 
GROUP BY projectname, usagedate 
HAVING Cost >= '20'

第二次查询

SELECT view_table_A.accountId, view_table_A.date, SUM(view_table_A.cost) as Cost 
FROM view_table_A
GROUP BY accountId, date
HAVING Cost >= '20'
SELECT view_table_B.projectname, view_table_B.usagedate, sum(view_table_B.cost) as Cost 
FROM view_table_B 
GROUP BY projectname, usagedate 
HAVING Cost >= '20'

我的问题是,第一个查询运行良好,而第二个查询将返回错误,如下所示

Amazon无效操作:列“view_table_B.cost”必须出现在GROUP BY子句中或用于聚合函数中

更新-1
我试图从查询中删除,但仍然得到相同的结果。我附上了我试图在红移中执行的查询的屏幕截图。

红移标识符不区分大小写,因此
cost
cost
在查询中发生冲突

我能够通过以下方式重现问题:

with src(cost, dat) as (
    select 1, current_date
    union all
    select 2, current_date
)
SELECT
 dat,
 sum(s.cost) as Cost
FROM src s
GROUP BY dat
HAVING Cost = 3
;
它给了我

[2020-06-04 11:22:44][42803][500310]Amazon无效操作:列“s.cost”必须出现在GROUP BY子句中或在聚合函数中使用

如果将列重命名为不同的名称,则可以修复查询:

with src(cost, dat) as (
    select 1, current_date
    union all
    select 2, current_date
)
SELECT
 dat,
 sum(s.cost) as sum_cost
FROM src s
GROUP BY dat
HAVING sum_cost = 3
;

我还惊讶地看到,用
无法解决问题-正如我最初所预期的那样

。您没有正确地转录查询。如果一个有效,另一个也应该有效。请注意:
20
周围的单引号不正确。比较值应该是数字,而不是字符串。@GordonLinoff,谢谢您的回复。我试图删除查询中的单个引号,但仍然得到相同的结果。当我执行这两个查询时,我还会附上屏幕截图。