有没有一种方法可以找到每一行的总和? PostgreSQL

时间:2020-04-23 17:42:48

标签: postgresql

假设您有一个n列的表,例如

  create table x
     (id integer
      x0 integer,
      x1 integer,
      x2 integer,
      x3 integer,
      .....
      xn integer
      primary key(id)
      )

n可以是一个很大的数字,您也不知道这些列的名称。假设您有50行,例如

insert into x (74934,1, 9, 21, 5....16)
insert into x (58496,4, 2, 3, 19....52)
.....
insert into x (10475,48, 245, 8, 71....111)

有没有一种方法可以找到每一行的总和? 像1 + 9 + 21 + 5 + ... + 16 =第一行的总和

1 个答案:

答案 0 :(得分:0)

使用JSON(B) functions

with t(id, x1, x2, x3) as (values(1,1,2,3),(2,4,5,6))
select
    id,
    (select sum(value::numeric) from jsonb_each(to_jsonb(t)) where key like 'x%')
from t;