Postgresql

根據前一行和行組的值填充行

  • August 25, 2022

使用postgresSQL 13.6

根據此處的問題Add value on one column based on values of a group of rows

對於按 service_num 分組的行,可以使用其中一行中已包含的相同文本填充該組的剩餘行。

與表:

像這樣填充:

類型文字可以出現在每組的任何一行中。

我正在嘗試使用lag僅複製選擇列上一行中的內容的表達式

從外觀上看,您可以使用該組的最大值或最小值更新每個組:

UPDATE t t1
   SET type = (SELECT MAX(type) 
               FROM t t2 
               WHERE t2.service_num = t1.service_num); 

未經測試。

您可以考慮將類型移動到單獨的表(因為它似乎依賴於目前表中的非關鍵屬性)

CREATE TABLE service_num_type  -- Or whatever this may be 
( service_num text not null primary key
, type text not null -- type is a reserved world
);

INSERT INTO service_num_type
   (service_num, type)
SELECT DISTINCT service_num, type
FROM t
WHERE type is not null;

ALTER TABLE t
   DROP COLUMN type;

ALTER TABLE t ADD CONSTRAINT <constraint name>
   FOREIGN KEY (service_num)
   REFERENCES service_num_type
               (service_num);

引用自:https://dba.stackexchange.com/questions/315996