2013-08-06 7 views
0

Я попытался добавить эти операторы case (CASE WHEN adj.adjcat = 'WRITE_OFF' THEN adj.amt) как 'WriteOff' для моего кода. Я получаю неправильный ситакс около ')' ошибка. Msg 102, Level 15, State 1, Line 18Неправильный синтаксис около '=' Ошибка CASE Statement

То, что я хочу, чтобы это произошло, если поле adj.adjcat является write_off затем поместить значение из adj.amt в Списание колонке С помощью следующего кода:

SELECT 
ar.UCI 
,ar.reportmonth 
,(case when ar.transagebucket < 1 then '0_30' 
    when ar.transagebucket = 1 then '31_60' 
    when ar.transagebucket = 2 then '61_90' 
    when ar.transagebucket = 3 then '91_120' 
    when ar.transagebucket = 4 then '121_150' 
    when ar.transagebucket = 5 then '151_180' 
    else 'Over180' end) as AgeBucket 
,ar.PatName as PatientName 
,ar.AcctNu as AccountNumber 
,Convert (varchar(10),ar.dos,101) as Svc_Date 
,ar.cptdisplay 
,(ins.insdesc+ ' - ' +ins.insmne) as Insurance 
,Sum(ar.chgamt) as ChgAmt 
,ISNULL(Sum(pmt.pmtamt),0) as PmtAmt 
,(CASE WHEN adj.adjcat = 'WRITE_OFF' THEN adj.amt) as 'WriteOff' 
,(CASE WHEN adj.adjcat = 'DEBIT' THEN adj.amt) as 'Debit' 
,(CASE WHEN adj.adjcat = 'ADMIN_ADJ' THEN adj.amt) as 'AdminAdj'  
,ISNULL((ar.curbal),0) as CurBal 
FROM 
rpt_dat_ARDetail ar 
LEFT JOIN rpt_dat_PmtDetail pmt ON ar.clntid = pmt.clntid 
AND ar.AcctNu = pmt.AcctNu  
and ar.dos = pmt.dos and ar.reportmonth = pmt.reportmonth and ar.chgamt = pmt.chgamt 
and ar.curbal = pmt.curbal 
LEFT JOIN rpt_dat_AdjustmentDetail adj ON ar.clntid = adj.clntid 
AND ar.aid = adj.aid AND ar.dos = adj.dos 
INNER JOIN rpt_dic_Ins ins ON ar.insmne = ins.insmne AND ar.clntid = ins.clntid 
+2

Вы пропустили 'end' или' else end' –

ответ

2

Вам не хватает END. Кроме того, вы должны избегать 'single quote' псевдонимов и использовать [square brackets] вместо:

(CASE WHEN adj.adjcat = 'WRITE_OFF' THEN adj.amt END) as [WriteOff] 
1

Там должно быть

(CASE WHEN adj.adjcat = 'WRITE_OFF' THEN adj.amt END) as 'WriteOff' 

ИЛИ

(CASE WHEN adj.adjcat = 'WRITE_OFF' THEN adj.amt ELSE '' END) as 'WriteOff' 

вместо

(CASE WHEN adj.adjcat = 'WRITE_OFF' THEN adj.amt) as 'WriteOff' 

То же для Debit и AdminAdj.

+0

Спасибо, i-one это сработало – user2576682