我有三個表:Customer、CustomerOrder和OrderStatus。
我的資料庫充滿了以下資訊:
顧客
| ID | 姓名 |
|---|---|
| 1 | 鮑勃 |
| 2 | 詹姆士 |
顧客訂單
| ID | 顧客 | 數量 | 地位 |
|---|---|---|---|
| 1 | 1 | 100 | 1 |
| 2 | 1 | 83 | 1 |
| 3 | 1 | 432 | 2 |
| 4 | 2 | 58 | 3 |
| 5 | 2 | 33 | 2 |
| 6 | 3 | 10 | 1 |
訂單狀態
| ID | 描述 |
|---|---|
| 1 | 待辦的 |
| 2 | 完全的 |
| 3 | 取消 |
我需要幫助撰寫一個 SQL 查詢,該查詢顯示每個客戶的最新訂單(最高訂單 ID)的狀態。對資料運行查詢將產生以下結果:
| 顧客 | 最新訂單狀態 |
|---|---|
| 1 | 2 |
| 2 | 2 |
| 3 | 1 |
uj5u.com熱心網友回復:
max(CustomerOrder.Id)與 結合使用以group by CustomerOrder.Customer獲得每個客戶的最高 OrderId。
uj5u.com熱心網友回復:
您還可以使用視窗功能按客戶降序排列您的訂單。Row_number() 函式會將數字 1 分配給最新的訂單。
SELECT *, ROW_NUMBER() over ( partition by customer_id order by id desc) as row_no FROM
要只有最新資料,您可以像這樣嵌套此查詢:
SELECT
*
FROM (
SELECT
*,
ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY id DESC) AS row_no
FROM
orders )
WHERE
row_no = 1
這里有更多閱讀:postgreSQL row_number() 函式
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/529786.html
