SQL Server - CASE WHEN в предложении WHERE с функцией DATEDIFF - PullRequest
0 голосов
/ 02 мая 2018

Я пытаюсь выполнить приведенную ниже инструкцию where с case когда и DATEDIFF function. но я получаю синтаксическую ошибку. пожалуйста, помогите мне.

WHERE
    -- primary contract is Flowing
    CTS.ContractStatusIdentifier = 'FLW'                                         
    AND (CASE 
            WHEN VMO.ProvinceOrStateCode = 'ON'
               THEN DATEDIFF (dd, CTR.RenewalDate, @currentdate) >= 75
               ELSE DATEDIFF (dd, CTR.RenewalDate, @currentdate) >= 45)
    AND VMO.ProvinceOrStateCode IN ('ON','AB')

Ответы [ 2 ]

0 голосов
/ 02 мая 2018

SELECT [supp_call_tckt_num], UPPER ([назначено_)] как назначено_,

assign_date, close_date, diffday = CASE, когда close_date имеет значение null, тогда

datediff (d, assign_date, getdate ()) иначе

дата-конец (d, assign_date, close_date) end,

UPPER ([call_source]) как call_source,

UPPER ([account_type]) как account_type, [mdn],

UPPER ([status]) в качестве статуса, UPPER ([company_name]) в качестве company_name,

UPPER ([rep_id]) как rep_id, UPPER ([caller_first_name]) caller_first_name,

UPPER ([caller_last_name]) как caller_last_name, [account_number],

ВЕРХНИЙ ([сеть]) как сеть, ВЕРХНИЙ ([тип_ выпуска]) как тип_ выпуска,

UPPER ([проблема]) как проблема, UPPER ([подтип]) как подтип, UPPER ([prob_desc_res])

as prob_desc_res, UPPER ([notes]) как notes, [ticket_number] FROM [ewts_tracker] с (NOLOCK) ГДЕ [ewts_tracker]. [escalated] =

«Да» И datediff (d, isnull (assign_date, getdate ()), close_date)> = '3'

0 голосов
/ 02 мая 2018

Видимо, синтаксис WHERE предложения

AND (CASE 
        WHEN VMO.ProvinceOrStateCode = 'ON'
           THEN DATEDIFF (dd, CTR.RenewalDate, @currentdate) >= 75
           ELSE DATEDIFF (dd, CTR.RenewalDate, @currentdate) >= 45)

недействительно. Чтобы сделать это довольно просто, попробуйте

AND DATEDIFF (dd, CTR.RenewalDate, @currentdate)
    >= (CASE 
           WHEN VMO.ProvinceOrStateCode = 'ON'
               THEN 75
               ELSE 45
        END)

удачи

...