SQL-запрос для исключения определенного пользователя в определенный день

Я пытаюсь написать SQL-запрос, который будет использоваться в отчете SSRS. Он предназначен для отображения количества изменений, внесенных пользователем в таблицу между двумя датами. У меня запрос работает нормально, за исключением случаев, когда я пытаюсь удалить все записи определенного пользователя в определенный день, поскольку это было сделано для очистки данных и искажает значения.

Предложение WHERE, которое я пробовал, выглядит следующим образом:

WHERE
(DATEADD(MONTH, DATEDIFF(MONTH, 0, Hist.Timestamp), 0) >= @FromDate)
AND
(DATEADD(MONTH, DATEDIFF(MONTH, 0, Hist.Timestamp), 0) < @ToDate)
AND
(Hist.Timestamp <> '2022-04-26' AND Hist.UserId <> 'DOMAIN\John.Smith')

Но это удаляет все записи этого пользователя, а не только записи этого пользователя в этот день.

Как я могу отредактировать это предложение WHERE, чтобы исключить результаты, относящиеся к обоим элементам?

Спасибо, Павел

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
0
34
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
...AND NOT (hist.timestamp = '2022-04-26' AND hist.userid = 'DOMAIN\John.Smith')

Спасибо за ваш ответ, к сожалению, он показывает полный набор данных для этого пользователя, включая результаты на эту дату.

elpaulio 16.05.2022 10:30

Ответ показывает логику, которую вы просили. Если это не делает то, что вы хотите, у вас есть дополнительные проблемы (например, может быть, такая жестко запрограммированная проверка даты без указания формата даты рискованна). Если вам нужна дополнительная помощь, пожалуйста, предоставьте образцы данных и ожидаемый результат.

Jonas Metzler 16.05.2022 10:33

Ваш комментарий относительно формата даты дал мне ответ для моего конкретного набора данных, поскольку hist.timestamp является форматом DATETIME, поэтому только ввод даты в предложении WHERE был неправильным. Я отредактировал его на AND NOT (Hist.Timestamp < '2022-04-27' AND Hist.UserId = 'DOMAIN\John.Smith'), который теперь работает.

elpaulio 16.05.2022 10:44

Отлично, это то, что я имел в виду под «рискованным»;)

Jonas Metzler 16.05.2022 10:45

Другие вопросы по теме