Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 选择符合条件的所有记录加上不符合条件的下一条记录_Sql_Ms Access - Fatal编程技术网

Sql 选择符合条件的所有记录加上不符合条件的下一条记录

Sql 选择符合条件的所有记录加上不符合条件的下一条记录,sql,ms-access,Sql,Ms Access,我有一个表,它有如下列: ID, Description, PC, Account, Amount 我将在“PC”列中寻找一个009值,每个数据在“ID”列中都有一个顺序编号的唯一ID。具有009“PC”值的每个数据后面至少有一个项目没有将“009”作为PC值 我有没有办法写一个真实的、类似于下面伪代码的查询?这样的事情真的可能吗 SELECT table.ID AS ID, table.Description AS Description, table.PC AS PC WHER

我有一个表,它有如下列:

ID, Description, PC, Account, Amount
我将在“PC”列中寻找一个009值,每个数据在“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))

如果您知道
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;

样本数据和预期输出将非常好,并且易于理解。问题的格式不正确,没有任何意义,因为它的表述如下:
选择所有符合条件的记录,再加上下一条不符合条件的记录
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'
  )
)
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))