2016-04-14 13 views
1

私が削除mysqlのタグアラートはグループごとの合計に基づくIF文に基づいていますか?

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

は、この文字列で検索してください。電子メールを送信するには、まずすべてのEMP_IDのリストが必要です。次に、EMP_IDの照会に別の述部を追加します。リストをループし、各受信者の電子メールを送信します。 –

+0

私はそれぞれの人にメールを送るつもりはありません。私はまず、技術のどれかがすべての技術者の合計ではなく、6未満の継続時間を持つ技術者のみを選択することを望むなら、自分自身に注意を喚起したい。 –

+1

Gotcha。それらのいずれかの継続時間が<6であるかどうかを判断する簡単な方法は、存在を使用することです。次に、標準のselect文を使用してすべての名前を取得できます。実際のコーディングについてのヘルプが必要な場合は、ここから始めてください。 http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/ –

答えて

0

現在、私のコードは、すべての従業員の時間のすべてを集計され、どのようにのみ、各従業員のためのアラートを作成できますか、どの従業員が日常の時間が6.00を下回る場合にのみ、このアラートを作成したいです。これは、カーソルが適切である珍しい倍のものであろう

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

これはwhatsが表示されているように機能しましたが、duration sum <6の従業員の条件がリストをトリガーする場合、メールを送信する機能の警告部分を取得するには遠く離れています –

+0

回答する情報が不十分ですこの質問。このアラートを送信するアプリケーションはありますか?どのようなプログラミング言語、あなたがこのアプリで持っているコード、どのようにアラートなどを送信する必要があります... –

+0

私の元のコードでは、私は電子メールで送信されるクエリをトリガするIFステートメントをやっているが、私はできません従業員一人あたりの合計所要時間を6秒以上にするためにif文を取得すると、メールが正しくトリガーされない –

関連する問題