1
特定代碼的所有訂單我持有的訂單狀態變化表:TSQL獲取他們的歷史
ORDER_ID | CHANGE_DATE | CODE_1 | CODE_2 | CODE_3
=============================================================
1 | 2012-09-01 12:20 | Z1 | NULL | NULL
1 | 2012-09-01 12:21 | Z2 | S01 | NULL
1 | 2012-09-01 12:22 | Z2 | S04 | NULL
2 | 2012-09-01 12:22 | Z1 | S01 | NULL
3 | 2012-09-01 12:23 | Z1 | S03 | NULL
1 | 2012-09-01 12:24 | Z1 | S02 | NULL
2 | 2012-09-01 12:29 | Z1 | S05 | NULL
1 | 2012-09-01 13:29 | Z5 | T01 | X01
2 | 2012-09-01 13:31 | Z1 | T01 | NULL
,我需要選擇ORDER_ID爲有歷史CODE_2 IN(S01,S02每一份訂單, S03),但他們之後沒有S04和S05。
在這種特殊情況下查詢應返回1階,因爲CODE_2後沒有S04和S05,請注意,爲了在1歷史上曾有S04,但在這之後它有代碼S02。 由於代碼S03,它也應該返回訂單3。 不應退回訂單2,因爲其歷史記錄中的最後一個代碼是S05(最後一次來自S組)。
我可以做到這一點,而無需加入其他表?我只想從此表中選擇ORDER_ID。
通過哪些列,你可以說,爲了1的「後」'有一個'S02' S04'。 'S04'具有較晚的日期時間值,這是唯一需要排列的明顯列。 –
@Damien_The_Unbeliever - 對不起,這個小錯誤,我已經解決了這個問題。 – Misiu
我已在我的答案中更新了示例數據,並驗證它現在返回訂單1和3. –