SQL每日一題(20220303)及知識點總結

題目來自:公衆號【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;

知識點

  1. WITH AS
  2. LEAD OVER
  3. 無法使用比較運算符來測試 NULL 值,比如 !=, =,<,>或者 <>。我們必須使用 IS NULL 和 IS NOT NULL 操作符
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章