2014-10-20 39 views
-1

我使用下面的代碼,以匹配ID號行:SQL - 創建於PARTITION層次BY語句

SELECT *, 
    LEAD(ORDER, 1) OVER(PARTITION BY ID_NBR) AS PREV_ORDER 
FROM TABLE 

在我的數據,一些身份證號碼丟失。如果(且僅當)ID號缺失,我想通過Cust_Name來匹配行。 LEAD/OVER命令有可能嗎?

謝謝,

+0

失蹤之前,你的意思是他們是空? – radar 2014-10-20 19:39:41

+0

ID_NBR字段爲空。 – waealu 2014-10-20 19:41:51

+0

你能定義「匹配」嗎?什麼是'cust_name'?列'訂單'在哪裏進入?你知道'order'是一個非法列名嗎?如果您發佈了原始數據的樣本,然後再添加另一個您想要的數據樣本,則可能會使事情變得更加簡單,同時還會詳細描述如何將數據轉換爲其他數據。 – Ben 2014-10-20 20:23:21

回答

0

也許你需要類似的東西?

with tab as (
select 1 id, 'n1' cust_name from dual 
union all select 2, 'n2' from dual 
union all select null, 'n3' from dual 
union all select 4, 'n4' from dual 
) 
select id, cust_name, 
      lag(cust_name ignore nulls) over(order by id) prev_name, 
      lead(cust_name ignore nulls) over(order by id) next_name 
from tab; 

IGNORE NULLS - 在查找滯後/前導值時跳過NULL值。

您可以添加 「PARTITION BY山坳[山口]」 ORDER BY

它必須有ORDER BY與LAG/LEAD功能