Ich möchte nur diese Warnung erstellen, wenn alle Mitarbeiter täglich Stunden unter 6,00 fallen, derzeit ist mein Code alle Stunden aller Mitarbeiter Auszählung, wie die Warnung nur für jedenAlert Wird auf IF-Anweisung basierend auf Summe nach Gruppe?
Mitarbeiter schaffendeclare @totalhrs int
SELECT @totalhrs = SUM(duration)
FROM pl00.DBO.schedule
where (schedule.DATE = CONVERT(char(10), getdate()+2, 121)
and schedule.TYPE <> 'z')
group by EMP_ID, schedule.DATE
if(@totalhrs < 6)
begin
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'mail.pacificlawnsprinklers.com',
@recipients = '[email protected]',
@query = '
SET NOCOUNT ON;
SELECT EMP_ID, DateName(weekday, Cast(schedule.DATE AS date)),schedule.[DATE], SUM(duration) as TotalHrs
FROM pl00.DBO.schedule
where (schedule.DATE = CONVERT(char(10), getdate()+2, 121)
and schedule.TYPE <> "Z")
group by EMP_ID, schedule.DATE
',
@subject = 'Lights Lists to Review',
@attach_query_result_as_file = 0 ;
end
Dies ist eine der seltenen Zeiten wäre, wo ein Cursor geeignet ist. Sie benötigen zuerst eine Liste aller EMP_IDs, um auch eine E-Mail zu senden. Fügen Sie dann der Abfrage für die EMP_ID ein anderes Prädikat hinzu. Durchlaufen Sie die Liste und senden Sie für jeden Empfänger eine E-Mail. –
Ich möchte nicht jede Person per E-Mail kontaktieren. Ich möchte mich zuerst nur alarmieren, wenn IRGENDEIN der Technologie eine Dauer <6 nicht eine Summe aller Techniker haben, dann wähle ich NUR die Techniker mit einer Dauer Summe weniger als 6 –
Gotcha. Der einfachste Weg, um festzustellen, ob einer von ihnen eine Dauer <6 hat, ist die Verwendung von EXISTS. Dann können Sie alle Namen mit einer Standard-Select-Anweisung abrufen. Wenn Sie Hilfe bei der eigentlichen Programmierung benötigen, sollten Sie hier beginnen. http://spaghettiba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/ –