Ошибка неверного имени столбца, когда столбец на месте - PullRequest
0 голосов
/ 23 сентября 2019

Я пытаюсь выбрать строки, в которых дата окончания находится в пределах диапазона.В моей таблице подписки dbo.subs есть столбцы startdate и enddate.Когда я использую startdate, запрос выполняется, но когда я использую enddate, он говорит, что имя столбца недопустимо.

Я пытался использовать '' или "" [] в конце enddate, я также пытался написать полноеимя столбца вышло (dbo.subscription.enddate), но, похоже, это не имеет значения.

;WITH cte 
     AS (SELECT Membershipnumber as Id
               Row_number() 
                  OVER ( 
                    partition BY membershipnumber 
                    ORDER BY subscription.enddate DESC) AS rownumber 
         FROM   [dbo].[userprofile] 
                INNER JOIN dbo.subscription 
                        ON userprofile.id = subscription.userprofileid 
                INNER JOIN dbo.subscriptiontype 
                        ON subscriptiontype.id = subscription.subscriptiontypeid

        ) 
SELECT * 
FROM   cte 
WHERE  rownumber = 1 and enddate between'2014-12-31' and '2018-12-31'
order by Id

Сообщение об ошибке:

Msg 207, Level 16, State 1, Line 21
Invalid column name 'enddate'.
Msg 207, Level 16, State 1, Line 21
Invalid column name 'enddate'.

1 Ответ

5 голосов
/ 23 сентября 2019

Ваш последний SELECT является SELECT FROM cte.

И cte определяет только два столбца: Id и RowNumber.

enddate не определено в cte.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...