Удалить недостающую точку с запятой из оператора WITH? - PullRequest
0 голосов
/ 02 марта 2020

Я пытаюсь выполнить следующий запрос:

With T As (Select A.TerminationDate,
        B.TerminationApproach,
        B.Date,
        A.UserName,
        A.LastName,
        A.FirstName,
        Case
          When B.Date <= A.TerminationDate Then 0
          Else 1
        End As EvalCheck
      From A 
      Left Join B On B.ChangedUser = A.UserName)
Select T.UserName,
  T.seqnum,
  T.TerminationDate,
  T.TerminationApproach,
  T.Date,
  T.LastName,
  T.FirstName,
  T.EvalCheck
From (Select T.*,
        Row_Number() Over (Partition By T.UserName Order By T.Date) As
        seqnum
      From T) T;
Where T.seqnum = 1

и получить следующую ошибку в моей базе данных SQL при попытке ее выполнить:

enter image description here

Может быть, есть лучший способ сделать этот запрос и избавиться от ошибки?

Ответы [ 2 ]

1 голос
/ 02 марта 2020

Зачем вообще использовать CTE?

Select A.TerminationDate, B.TerminationApproach, B.Date,
       A.UserName, A.LastName, A.FirstName,
       (Case When B.Date <= A.TerminationDate Then 0
             Else 1
        End) As EvalCheck
From A Left Join
     (select b.*,
             row_number() over (partition by B.ChangedUser order by B.date asc) as seqnum
      from B
     ) B
     On B.ChangedUser = A.UserName and B.seqnum = 1;
0 голосов
/ 02 марта 2020

Поскольку ключевое слово WITH перегружено, его позиция в выражении важна. В CTE он должен быть первым, и это гарантируется тем, что ему предшествует точка с запятой.

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