我在此查询中收到以下错误:[22P02]错误:数字类型的无效输入语法:“。”
select
date,
row_number () over () as RN,
case when (row_number() over ()) ='8' then '.' else (success/trials) end as "After_1M"
from trials
groupy by date;
还有另一种方法指示应调整ROWxCOLUMN组合中的某个值吗?
当然,您的描述还有很多不足之处。但是您的查询只需要稍作修改即可实际运行。首先是“按日期分组”。我认为这只是一个错字。但是没有聚合功能的分组依据通常不执行任何操作-这就是其中之一。但我相信您尝试按日期进行行计数。如果是这样,则需要row_number函数中的by和order by子句进行分区。另一个问题在表达式中。表达式中的每个条目都必须返回相同的数据类型,但是如果不是这样的话。 THEN条件返回字符(。),而ELSE返回一个数字(成功/试验),该数字必须定义2个数字列才有效。那么哪些需要改变?稍后我会假设。鉴于此,我们得出以下结论:
select date
, row_number() over(partition by date order by trl_date) rn
, case when (row_number() over(partition by date order by trl_date)) = 8
then '.'
else (success/trials)::text
end as "After_1M"
from trials;
注意:日期是非常差的日期,是非常差的列名称。它是reserved word,也是数据类型。