我有一個訂單表。在該表中,除其他行,我有一個ID(PK),客戶ID,航運國家,訂單日期在SQL中選擇當前列值與先前值不匹配的行
ID | CustomerId | ShippingCountry | OrderDate
1 | 111111 | DE | 2016-08-13
2 | 222222 | GB | 2016-08-17
3 | 111111 | ES | 2016-09-05
4 | 333333 | ES | 2016-10-25
5 | 444444 | US | 2016-10-26
6 | 555555 | FR | 2016-10-29
7 | 666666 | DE | 2016-11-04
8 | 111111 | DE | 2016-11-12
9 | 222222 | US | 2016-12-01
10 | 444444 | GB | 2016-12-01
11 | 555555 | FR | 2016-12-05
12 | 333333 | ES | 2016-12-15
我需要選擇行,其中客戶以前的訂單不符合他們的最新訂單的航運國家。我也想在結果中看到兩種不同的運費代碼。
使用上面的例子,我想看到:
CustomerId | ShippingCountryLatest | ShippingCountryPrevious
111111 | DE | ES
222222 | US | GB
444444 | GB | US
的ID和訂購日期可以用來確定事物的順序。 ID是一個遞增的數字,訂單日期如其所述。
我需要運行這個表的表有大約500k行。
有什麼建議嗎?
這裏有一個SQLFiddle讓你開始:http://sqlfiddle.com/#!6/5d046/1/0
的SQL服務器的版本? –
2012年以後的領先/滯後。 row_number()與cte否則將是一個好的開始。 – scsimon
Cust 111111去DE> ES,然後ES> GB。爲什麼111111是DE> GB? –