2015-05-11 52 views
-1

我得有這樣的表:選擇符合標準的加下一個記錄,所有記錄不符合標準

ID, Description, PC, Account, Amount 

我要在尋找一個009的值「 PC「列,並且每個數據在」ID「列中具有順序編號的唯一ID。每個具有009「PC」值的數據將至少有一個後面沒有「009」作爲PC值的項目。

有沒有什麼辦法可以寫出一個真實的,類似於下面的假代碼的查詢?這樣的事情實際上可能嗎?

SELECT 
table.ID AS ID, 
table.Description AS Description, 
table.PC AS PC 
WHERE ((table.PC = 009) OR (whatever, as long as table.ID-1's "PC" value = 009)) 
+0

樣本數據和預期產出將是巨大的,而且容易瞭解 – HaveNoDisplayName

+0

這個問題沒有很好的形成,沒有任何意義,只要它的形式如下:'選擇所有符合標準的記錄加下一個不符合標準的記錄' –

回答

0

如果你知道id s爲真的連續的,你可以把邏輯WHERE子句中:

SELECT t.ID, t.Description, t.PC AS PC 
FROM table as t 
WHERE t.PC = 009 OR 
     EXISTS (SELECT 1 
       FROM table as t2 
       WHERE t2.id = t.id - 1 AND t2.PC = 009 
      ) 
ORDER BY t.ID; 
0
SELECT 
table.ID AS ID, 
table.Description AS Description, 
table.PC AS PC 
FROM table 
WHERE ((table.PC = '009') OR 
table.ID - 1 = 
    (
    SELECT table.ID 
    FROM table 
    WHERE table.PC = '009' 
) 
) 
0
SELECT 
    t.ID AS ID, 
    t.Description AS Description, 
    t.PC AS PC 
FROM tbl t 
WHERE 
    (t.PC = 009) OR 
    (t.id - 1 = (SELECT t2.ID FROM tbl t2 where t.PC = 009)) 
相關問題