2015-05-11 10 views
-1

У меня есть таблица, которая имеет столбцы, как это:Выберите все записи, которые соответствуют критериям, плюс следующую запись, не соответствуют критериям

ID, Description, PC, Account, Amount 

Я буду искать значение 009 в " PC ", и каждая точка привязки имеет порядковый номер с уникальным идентификатором в столбце" ID ". Каждая точка отсчета с 009 «ПК» будет иметь по крайней мере один элемент, следующий за ним, который не имеет значения «009» в качестве значения ПК.

Есть ли способ написать запрос, который является реальным и похожим на поддельный код ниже? Возможно ли что-то подобное?

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)) 
Смежные вопросы