在以下CASE语句代码中,我收到“传递给LEFT或SUBSTRING函数的无效长度参数”错误。奇怪的是,它在Select语句中可以正常工作,但是一旦复制并粘贴到Group By中后,就会给出错误。
我先对凌乱的代码表示歉意,这项工作正在进行中!
select
case when mm.[MEA Set] in ('Medicaid - Metrics')
and UPPER(right(left(RIGHT(mm.[Reference ID] + '-',len(mm.[Reference ID]) - CHARINDEX('-',mm.[Reference ID],0)),charindex('-',RIGHT(mm.[Reference ID] + '-',0))) - 1),1)) like '%a%'
or UPPER(right(left(RIGHT(mm.[Reference ID] + '-',1)) like '%b%'
then left(mm.[Reference ID],CHARINDEX('-',0) + charindex('-',0))) - 1)
when mm.[MEA Set] in ('Medicaid - Metrics')
and UPPER(right(left(RIGHT(mm.[Reference ID] + '-',1)) not like '%a%'
or UPPER(right(left(RIGHT(mm.[Reference ID] + '-',1)) not like '%b%'
then left(mm.[Reference ID],0))) - 0)
when mm.[Reference ID] in ('CLM-12-FLC-LTC','CLM-12-FLC-MMA','CLM-13-FLC-LTC','CLM-13-FLC-MMA','CLM-16-FLC-LTC','CLM-16-FLC-MMA','CLM-17-FLC-LTC','CLM-17-FLC-MMA')
then left(mm.[Reference ID],0))) +4)
else mm.[Reference ID]
end as GroupedRefID,NumeratorTotal = sum(cast(m.[Numerator Value] as float)),DenominatorTotal = sum(cast(m.[Denominator Value] as float)),m.StartofReportingPeriod,m.EndofReportingPeriod
from MEACyclesnapShot m
left join MEACONFIGsnapshot mm
on m.Configuration = mm.[Configuration Number]
where convert(date,m.CreatedOn) =
(select max(convert(date,CreatedOn)) from MEACyclesnapShot)
and convert(date,mm.CreatedOn) =
(select max(convert(date,CreatedOn)) from MEACONFIGsnapshot)
and convert(date,m.EndofReportingPeriod) > '02/01/2016'
and mm.[MEA Set] in ('Medicaid - Metrics','Medicare - Metrics')
and mm.[Configuration Status] in ('active','Gap','Retired')
group by m.StartofReportingPeriod,m.EndofReportingPeriod,case when mm.[MEA Set] in ('Medicaid - Metrics')
and UPPER(right(left(RIGHT(mm.[Reference ID] + '-',0))) +4)
else mm.[Reference ID]
end