2015-05-11 50 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)) 
相关问题