我正在使用 SQL 服務器,我有一個看起來像這樣的表(表 1)。我想AccountId通過運行 select 陳述句來查看表中的下一個最大值。
表格1
| 公司編號 | 帳戶ID | 客戶ID |
|---|---|---|
| 1 | 14 | 2 |
| 1 | 14 | 5 |
| 1 | 17 | 3 |
| 1 | 18 | 1 |
| 1 | 18 | 2 |
| 2 | 7 | 3 |
| 2 | 7 | 4 |
| 2 | 25 | 1 |
我試過使用 Lead() 但這不是我想要的。它只是展望下一個“AccountId”,而不是下一個最偉大的。我只想向前看相同的“CompanyId”,并且每次“AccountId”發生變化時。
Select lead(AccountId, 1) over (partition by CompanyId order by CompanyId, CustomerId) as NextAccountId
From Table1
這是我想要的結果
| 公司編號 | 帳戶ID | 客戶ID | 下一個帳戶 ID |
|---|---|---|---|
| 1 | 14 | 2 | 17 |
| 1 | 14 | 5 | 17 |
| 1 | 17 | 3 | 18 |
| 1 | 18 | 1 | 空值 |
| 1 | 18 | 2 | 空值 |
| 2 | 7 | 3 | 25 |
| 2 | 7 | 4 | 25 |
| 2 | 25 | 1 | 空值 |
uj5u.com熱心網友回復:
這可以通過一個簡單的相關子查詢來完成:
select *, (
select Min(t2.accountId)
from t t2
where t2.CompanyId=t.CompanyId and t2.accountId > t.accountId
) as NextAccountId
from t;
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/411052.html
標籤:
上一篇:OracleQueryoverPipelineFunction-資料包含ASCII擴展字符時出現奇怪錯誤
下一篇:選擇最暢銷的產品ID
