Выберите SQL, чтобы выбрать следующую несоответствующую запись на ту же дату - PullRequest
0 голосов
/ 28 января 2019

У меня есть имя таблицы как client_audit, уникальный столбец и столбец идентификаторов recno, clientcode, auditdate, Auditflag и имеет несколько других столбцов, которые, как правило, изменяются и записываются, как до аудита, так и послеконтрольный образ для того же клиентского кода.
auditflag 1 означает до изменения, а auditflag 2 - после изменения образа.

Если я запускаю select * from client_audit where audit_flag = 1, то количество записей приходит как 30000100

Если я запускаю select * from client_audit where audit_flag = 2, то количество записей приходит как 30000000

Так что на самом деле для 100 записей у меня нет изображения после аудита.

Теперь записи создаются в паре, как длято же самое clientcode до того, как образ аудита и будет создан, их recnumber будут в последовательности.

Есть ли способ из той же таблицы, что я могу получить те 100 записей, которые имеют только до образа аудита, а не после аудитаизображение, рассматривающее recno как уникальное, а записи о личности и аудите будут в паре для одного и того же клиентского кода и для одного и того же audidate?

Ответы [ 2 ]

0 голосов
/ 28 января 2019

Во-первых, бесплатный совет: если вы вставляете обе записи в базу данных одновременно, вы должны использовать транзакцию, чтобы в случае сбоя одной из вставок обе они были, и у вас не было записей о потеряхкак вы делаете сейчас.

Чтобы ответить на ваш вопрос:
Вы можете использовать не существует, чтобы получить все записи, где audit_flag = 1, у которых нет соответствующей записи с audit_flag = 2, на основе clientcode и auditdate, вот так:

select * 
from client_audit as c1
where audit_flag = 1
and not exists
(
    select 1 
    from client_audit as c2
    where audit_flag = 2
    and c1.clientcode = c2.clientcode
    and c1.auditdate = c2.auditdate
)
0 голосов
/ 28 января 2019

Если я правильно понял структуру таблицы, попробуйте это

select * from client_audit where audit_flag = 1 and clientcode not in (select clientcode from client_audit where audit_flag = 2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...