SQL每日一題(20220303)及知識點總結
阿新 • • 發佈:2022-03-03
題目來自:公眾號【SQL資料庫開發】
有這樣一張表F0303,這只是其中一個單號的(我感覺語句不通順,去掉這句話)
希望按單號+工序排序,相鄰行部門相同的情況,取工序號最大的那一行記錄,得到的結果如下:
測試資料
CREATE TABLE F0303 ( 單號 VARCHAR(20) NOT NULL, 工序 VARCHAR(10) NOT NULL, 部門編號 INT NOT NULL, 完成數量 INT NOT NULL ) INSERT INTO F0303 VALUES('2021090065','0010',222,1500); INSERT INTO F0303 VALUES('2021090065','0020',223,1497); INSERT INTO F0303 VALUES('2021090065','0030',223,1497); INSERT INTO F0303 VALUES('2021090065','0040',213,1497); INSERT INTO F0303 VALUES('2021090065','0050',224,1497); INSERT INTO F0303 VALUES('2021090065','0060',224,1497); INSERT INTO F0303 VALUES('2021090065','0070',220,1496); INSERT INTO F0303 VALUES('2021090065','0080',220,1496); INSERT INTO F0303 VALUES('2021090065','0090',224,0);
答案
WITH tmpList AS ( SELECT *, LEAD(部門編號,1,NULL) OVER (PARTITION BY 單號 ORDER BY 工序) AS nextDp FROM F0303 ) SELECT 單號,工序,部門編號,完成數量 FROM tmpList WHERE 部門編號 <> nextDp OR nextDp IS NULL;
知識點