'='附近的语法错误错误CASE语句
问题描述:
我试图添加这些case语句(CASE WHEN adj.adjcat ='WRITE_OFF'THEN adj.amt)作为'WriteOff'给我的代码我得到一个不正确的sytax附近')'错误。 消息102,级别15,状态1,行18'='附近的语法错误错误CASE语句
如果字段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
答
您错过了END
。你也应该避免'single quote'
别名和使用[square brackets]
代替:
(CASE WHEN adj.adjcat = 'WRITE_OFF' THEN adj.amt END) as [WriteOff]
答
应该有
(CASE WHEN adj.adjcat = 'WRITE_OFF' THEN adj.amt END) as 'WriteOff'
OR
(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
您错过了'end'或'else end' –