循环通过列PSQL

时间:2015-03-10 20:13:24

标签: psql

如果任何列的值都不为NULL,我想遍历每一列并递增计数器。因此,如果连续7个中有三列,其值不为null,则计数器值应为3.

1 个答案:

答案 0 :(得分:0)

如果可以避免循环,那么循环很慢。如果你知道列的名称,你可以这样做:

UPDATE table SET counter = 
  CASE WHEN colA IS NULL THEN 0 ELSE 1 END +
  CASE WHEN colB IS NULL THEN 0 ELSE 1 END +
  CASE WHEN colC IS NULL THEN 0 ELSE 1 END +
  CASE WHEN colD IS NULL THEN 0 ELSE 1 END +
  CASE WHEN colE IS NULL THEN 0 ELSE 1 END +
  CASE WHEN colG IS NULL THEN 0 ELSE 1 END +
  CASE WHEN colF IS NULL THEN 0 ELSE 1 END;