Postgresql
根據前一行和行組的值填充行
使用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);