我沒有看到的someVal1,someVal2和someVal3字段的任何目的,所以我離開了出來。我使用自動編號作爲主鍵而不是日期/時間字段;但是這種方法也應該適用於你的日期/時間主鍵。這是我的表格版本中的數據。
pkey_field target
1 A
2 A
3 A
4 B
5 B
6 A
我用一個相關子查詢發現每一行的前面pkey_field值。
SELECT
m.pkey_field,
m.target,
(SELECT Max(pkey_field)
FROM YourTable
WHERE pkey_field < m.pkey_field)
AS prev_pkey_field
FROM YourTable AS m;
然後把它放在我加入基表的另一個副本的子查詢中。
SELECT
sub.pkey_field,
sub.target,
sub.prev_pkey_field,
prev.target AS prev_target
FROM
(SELECT
m.pkey_field,
m.target,
(SELECT Max(pkey_field)
FROM YourTable
WHERE pkey_field < m.pkey_field)
AS prev_pkey_field
FROM YourTable AS m) AS sub
LEFT JOIN YourTable AS prev
ON sub.prev_pkey_field = prev.pkey_field
WHERE
sub.prev_pkey_field Is Null
OR prev.target <> sub.target;
這是最終查詢的輸出。
pkey_field target prev_pkey_field prev_target
1 A
4 B 3 A
6 A 5 B
AHHHHHH!這很聰明!我仍然在着手處理子查詢的權力,但這個是一個非常輝煌和清晰的回答,我希望我有更多的信譽給予好評輸入。 – MMerry 2012-02-09 03:14:09
這兩頁來自你的同胞可能會幫助你提高抓地力。 :-) http://allenbrowne.com/subquery-01.html和http://allenbrowne.com/subquery-02.html – HansUp 2012-02-09 03:20:41
哈哈哈!我已經有了這兩頁,我正在瘋狂地傾注他們。只是另一個簡單的問題,這對於固定表格非常適用,但我如何修改此代碼以用於查詢?這將允許表單靈活地選擇日期範圍? – MMerry 2012-02-09 03:46:39