【发布时间】:2020-05-14 10:38:47
【问题描述】:
这快把我逼疯了。有人可以帮我弄清楚为什么我不断收到“非聚合值必须是关联组的一部分”错误吗?这真的没有意义。我不能对窗口函数进行分组,因此只有两个非聚合的选定字段是前两个。内部查询完全没问题,错误只是在我运行整个过程时发生。我还尝试使用实际的字段名称与数字顺序,我得到了同样的错误,就好像我应该按其他东西分组一样。
select
end_of_week,
deal_id,
sum(sum_nob) as sum_nob,
ROW_NUMBER() OVER(ORDER BY sum_nob desc) AS row_num
from (
select
td_week_end (report_date) as end_of_week,
report_date,
deal_id,
sum (nob) as sum_nob
from sandbox.rev_mgmt_deal_funnel df
left join (
select
deal_uuid
from sandbox.sup_analytics_deal_counts_final) s on df.deal_id = s.deal_uuid
where s.deal_uuid is null
and grt_l3 = 'L3 - High End'
and report_date >= '2019-10-01'
group by end_of_week,
report_date,
deal_id) a
group by 1,2
【问题讨论】:
-
您可以在 Teradata 中使用别名列名,但解析器仅在没有匹配的列名时检查别名 lst。在您的情况下,
sum(sum_nob) as sum_nob添加了一个别名,但它与基列同名,因此ROW_NUMBER() OVER(ORDER BY sum_nob desc)与基列匹配。两个答案都显示了修复,您也可以应用不同的别名。当然,Gordon 是对的,您当前的查询过于复杂
标签: sql teradata aggregate-functions