Неверный параметр длины: левая функция в группе по - PullRequest
0 голосов
/ 05 ноября 2019

Я получаю сообщение об ошибке «Неверный параметр длины, переданный в функцию LEFT или SUBSTRING» в приведенном ниже коде оператора CASE. Что странно, так это то, что он прекрасно работает в операторе 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] + '-', len(mm.[Reference ID]) - CHARINDEX('-', mm.[Reference ID], 0))) - 1), 1)) like '%a%' 
or  UPPER(right(left(RIGHT(mm.[Reference ID] + '-', len(mm.[Reference ID]) - CHARINDEX('-', mm.[Reference ID], 0)), charindex('-', RIGHT(mm.[Reference ID] + '-', len(mm.[Reference ID]) - CHARINDEX('-', mm.[Reference ID], 0))) - 1), 1)) like '%b%' 
then left(mm.[Reference ID], CHARINDEX('-', mm.[Reference ID], 0) + charindex('-', RIGHT(mm.[Reference ID] + '-', len(mm.[Reference ID]) - CHARINDEX('-', mm.[Reference ID], 0))) - 1)
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] + '-', len(mm.[Reference ID]) - CHARINDEX('-', mm.[Reference ID], 0))) - 1), 1)) not like '%a%' 
or  UPPER(right(left(RIGHT(mm.[Reference ID] + '-', len(mm.[Reference ID]) - CHARINDEX('-', mm.[Reference ID], 0)), charindex('-', RIGHT(mm.[Reference ID] + '-', len(mm.[Reference ID]) - CHARINDEX('-', mm.[Reference ID], 0))) - 1), 1)) not like '%b%' 
then left(mm.[Reference ID], CHARINDEX('-', mm.[Reference ID], 0) + charindex('-', RIGHT(mm.[Reference ID] + '-', len(mm.[Reference ID]) - CHARINDEX('-', 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], CHARINDEX('-', mm.[Reference ID], 0) + charindex('-', RIGHT(mm.[Reference ID] + '-', len(mm.[Reference ID]) - CHARINDEX('-', 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] + '-', len(mm.[Reference ID]) - CHARINDEX('-', mm.[Reference ID], 0)), charindex('-', RIGHT(mm.[Reference ID] + '-', len(mm.[Reference ID]) - CHARINDEX('-', mm.[Reference ID], 0))) - 1), 1)) like '%a%' 
or  UPPER(right(left(RIGHT(mm.[Reference ID] + '-', len(mm.[Reference ID]) - CHARINDEX('-', mm.[Reference ID], 0)), charindex('-', RIGHT(mm.[Reference ID] + '-', len(mm.[Reference ID]) - CHARINDEX('-', mm.[Reference ID], 0))) - 1), 1)) like '%b%' 
then left(mm.[Reference ID], CHARINDEX('-', mm.[Reference ID], 0) + charindex('-', RIGHT(mm.[Reference ID] + '-', len(mm.[Reference ID]) - CHARINDEX('-', mm.[Reference ID], 0))) - 1)
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] + '-', len(mm.[Reference ID]) - CHARINDEX('-', mm.[Reference ID], 0))) - 1), 1)) not like '%a%' 
or  UPPER(right(left(RIGHT(mm.[Reference ID] + '-', len(mm.[Reference ID]) - CHARINDEX('-', mm.[Reference ID], 0)), charindex('-', RIGHT(mm.[Reference ID] + '-', len(mm.[Reference ID]) - CHARINDEX('-', mm.[Reference ID], 0))) - 1), 1)) not like '%b%' 
then left(mm.[Reference ID], CHARINDEX('-', mm.[Reference ID], 0) + charindex('-', RIGHT(mm.[Reference ID] + '-', len(mm.[Reference ID]) - CHARINDEX('-', 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], CHARINDEX('-', mm.[Reference ID], 0) + charindex('-', RIGHT(mm.[Reference ID] + '-', len(mm.[Reference ID]) - CHARINDEX('-', mm.[Reference ID], 0))) +4)
else mm.[Reference ID] 
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...