Member 13156636 Ответов: 1

Msg 207, уровень 16, состояние 1, строка 27 недопустимое имя столбца


Я хочу найти общий расход по Лобу.
SELECT  
      [dte]
      ,Year([dte]) as RP_Year
      ,[LOB]
      ,Sum([Cost]) as Sum_cost
     
  FROM xxx
  Where [RP_Year] = '2017'
  Group by [LOB]

и получить ошибку
Msg 207, Уровень 16, состояние 1, строка 27 недопустимое имя столбца "RP_Year"

что же делать?

Что я уже пробовал:

...........................................................................................

1 Ответов

Рейтинг:
9

CHill60

Вы не можете использовать RP_Year в предложении WHERE - это псевдоним, а не имя столбца. Попробуй

SELECT  
      [dte]
      ,Year([dte]) as RP_Year
      ,[LOB]
      ,Sum([Cost]) as Sum_cost
     
  FROM xxx
  Where Year([dte]) = '2017'
  Group by [LOB]


Richard Deeming

Вероятно, было бы лучше использовать Саргабельный запрос:

WHERE [dte] >= CAST('20170101' As date) And [dte] < CAST('20180101' As date)

Member 13156636

ВЫБИРАТЬ
Год ([dte]) как RP_Year
,[БОЛЬШОЙ ОБЪЕКТ]
, sum ([cost]) as sum_cost
От ХХХ
Где [dte] >= CAST('20170101' As date) И [dte] & lt; CAST ('20180101' как дата)
Группа по годам([dte]), [LOB]

теперь он говорит

Msg 8115, Уровень 16, Состояние 2, Строка 2
Ошибка арифметического переполнения при преобразовании выражения в тип данных int.

Member 13156636

я использовал
sum(cast([cost] as BIGINT)) as sum_cost
муравей это работает

CHill60

Что это за тип cost