Проблема здесь в том, что, хотя это работает в SSMS, происходит сбой, когда я публикую его на веб-сайте, который использует SQL инструмент обработки. Я сузил его до первого сегмента в разделе С3. Используйте код до этого, и он выдаст ошибку (как и должно быть). Добавьте эту строку, и сайт падает. Я использовал другие запросы в качестве эксперимента и никаких проблем. Хотя я не могу гарантировать, что это будет работать, я полагаю, что ему не нравится, что мое поле periodyear имеет тип char (4) и не может выполнить неявное преобразование из char в int, а затем обратно в char. Поэтому мой вопрос: куда бы я поместил вторую жирную линию в секции C3 (или раньше)?
WITH c1 AS
(SELECT e.stfips, e.areatype, e.area, e. periodyear, e.period, e.seriescode, e.empces
FROM ces as e
WHERE e.periodtype='03'
And e.supprecord='0'
and e.periodyear=
(Select Max(periodyear)
From ces)
and e.period=
(Select Top(1)period
From ces
Order by periodyear desc, period desc)
and e.stfips='32'
and e.adjusted='1'
and e.areatype='01'
),
C2 AS
(Select Distinct c1.periodyear, c1.period
From c1
),
C3 As
(Select
**(Case When c2.period='01' Then (c2.period + 11) Else (c2.period-1) END) As 'month',**
(Case When c2.period='01' Then (c2.periodyear -1) Else (c2.periodyear) END) As 'year'
From C2
),
C4 AS
(Select c.stfips, c.areatype, c.area, c.periodyear, c.period, c.seriescode, c.empces
From ces as c, c2
Where c.period = c2.period
**And c.periodyear = ( cast ( cast(c2.periodyear as int) -1 ) as nvarchar(10) )**
And c.supprecord='0'
and c.stfips='32'
and c.adjusted='1'
and c.areatype='01'
),