修改列和行(PSQL)中的值

问题描述 投票:0回答:1

我在此查询中收到以下错误:[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组合中的某个值吗?

postgresql position row transform calculated-columns
1个回答
0
投票

当然,您的描述还有很多不足之处。但是您的查询只需要稍作修改即可实际运行。首先是“按日期分组”。我认为这只是一个错字。但是没有聚合功能的分组依据通常不执行任何操作-这就是其中之一。但我相信您尝试按日期进行行计数。如果是这样,则需要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,也是数据类型。

© www.soinside.com 2019 - 2024. All rights reserved.