2016-04-14 64 views
1

herhangi çalışanlar günlük saat şu anda benim kod tüm çalışanların saatlik tüm örtüşmektedir, 6.00 altında kalan yalnızca bu uyarıyı oluşturmak istiyorum, nasıl sadece her çalışanınAlert Group tarafından Sum'a dayalı IF beyanı üzerinde BA?

declare @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 
+0

:

bu sorguyu deneyin. Bir e-posta göndermek için öncelikle tüm EMP_ID'lerinin bir listesine ihtiyacınız vardır. Ardından, EMP_ID sorgusuna başka bir yüklem ekleyin. Her bir alıcı için yol boyunca e-posta göndererek listeden geçebilirsiniz. –

+0

Her kişiyi e-postayla göndermek istemiyorum. İlk önce, teknisyenlerin toplamı <6 değil, tüm teknisyenlerin toplamı varsa, kendimi uyarmak istiyorum, o zaman SADECE 6 –

+1

Gotcha'dan daha az bir süre toplamı ile teknikler seçmek zorunda kaldım. Bunlardan herhangi birinin <6 süresinin olup olmadığını belirlemenin kolay yolu, EXISTS kullanmaktır. Daha sonra standart bir deyim kullanarak tüm isimleri alabilirsiniz. Gerçek kodlamayla ilgili yardım almak isterseniz buradan başlayın. http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/ –

cevap

0

kaldır mysql etiketi için uyarı oluşturabilirim . Bu imleç uygundur ender zamanlardan biri olurdu

SELECT EMP_ID, DateName(weekday, Cast(schedule.DATE AS 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, Cast(schedule.DATE AS date) 
HAVING SUM(duration) > 6 
+0

Tamam, bu ne görüntüleniyor için çalıştı ama fonksiyonun uyarı parçası almak için orada sadece e-posta göndermek için bir süre süre <6 ile herhangi bir çalışanın condtion eğer o zaman –

+0

listesini tetikler varsa orada cevap yeterli bilgi yok bu soru. Bu uyarıyı göndermek için herhangi bir uygulama var mı. Hangi programlama dilini, bu uygulamada sahip olduğunuz kodu, uyariyi nasil uyariyacaginiz vb ... –

+0

orijinal kodumda, bir e-postada gönderilecek sorguyu tetiklemek için bir IF bildirimi yapıyorum, ancak Eğer 6'dan fazla olacak şekilde çalışan başına toplam süreye bakmak için if deyimini alın, sonra düzgün e-posta tetikleyemiyorum –