Как отфильтровать много записей с одним и тем же идентификатором
У меня есть система тикетов и я хочу отправить письмо на сотрудника, который назначен билетов на него не ответили или не решается на (билетов) время, так мне нужен просто запрос, чтобы отфильтровать записи, чтобы отправить индивидуальные письма, Электронная почта для каждого сотрудника только с его билеты, которые присвоены ему, и эти некоторые столбцы таблицы(TicketId, TicketDate, TicketStatusId, AssignToId, AssignToIdEmail, RespondDate, ResolvedDate), поэтому любое предложение оценили, а если требуются дополнительные пояснения, Скажите, а где здесь неоднозначность.
Спасибо,
Что я уже пробовал:
Я попробовал этот код, но он дает все записи(ибо если у меня есть два сотрудника, то он дает все записи два раза), а не одну за другой
DECLARE @AssignToId INT SET @AssignToId = 0 WHILE (@AssignToId < (select count(distinct AssignToId) from TicketDetails where ((RespondDate is not null) or (LEN(RespondDate) !=0)) and ((TicketStatusId = 1) or (TicketStatusId = 5)) and RespondDate < DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()+1)) and AssignToId=AssignToId)) BEGIN select TicketId, TicketDate, ProjectNameEn, RegionNameEn, CityNameEn, AssignToNameEn, PriorityNameEn, CreatedByEmployeeEn, RespondDate, AssignToEmail, AssignToSupervisorEmail, AssignToId from TicketDetails where ((RespondDate is not null) or (LEN(RespondDate) !=0)) and ((TicketStatusId = 1) or (TicketStatusId = 5)) and RespondDate < DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()+1)) and AssignToId=AssignToId order by TicketId Set @AssignToId = @AssignToId + 1 END
ABAKh
Это и есть код:
Объявить @AssignToId INT
SET @AssignToId = 0
WHILE (@AssignToId < (select count(distinct AssignToId) from TicketDetails
где ((RespondDate не null) или (лен(RespondDate) !=0)) и ((TicketStatusId = 1) или (TicketStatusId = 5)) и RespondDate &ЛТ; функция dateadd(DD, то 0, то функция datediff(DD, то 0, функции getdate()+1)) и AssignToId=AssignToId))
НАЧАТЬ
выберите TicketId, TicketDate, ProjectNameEn, RegionNameEn, CityNameEn, AssignToNameEn, PriorityNameEn, CreatedByEmployeeEn, RespondDate, AssignToEmail, AssignToSupervisorEmail, AssignToId
из TicketDetails
где ((RespondDate не null) или (лен(RespondDate) !=0)) и ((TicketStatusId = 1) или (TicketStatusId = 5)) и RespondDate &ЛТ; функция dateadd(DD, то 0, то функция datediff(DD, то 0, функции getdate()+1)) и AssignToId=AssignToId
заказ по TicketId
Set @AssignToId = @AssignToId + 1
КОНЕЦ
ZurdoDev
SQL-кодирование на этой неделе не работает. Он работает в наборах, а не на отдельных значениях, как у вас с параметром @ASsingTold.
ВЫБИРАТЬ *
Из ticketsDetails
Где COALESCE(RespondDate, '2050-01-01') < GETDATE() + 1
Вам не нужны все эти странные проверки на RespondDate, предполагая, что это поле даты.
Кроме того, я понятия не имею, что вы пытаетесь сделать с @AssignTold, но что бы это ни было, вы не можете сделать это таким образом.
Кроме того, ваше предложение where имеет AssignTold = AssignTold, что совпадает с true. Вы, вероятно, имели в виду @AssignTold, но опять же, вы не можете сделать это таким образом.
ABAKh
Тогда, если я не могу сделать это таким образом, Пожалуйста, объясните мне, как это сделать