Заполните переменную таблицы с помощью CTE - PullRequest
0 голосов
/ 12 июля 2020

Я создаю CTE, поскольку мне нужны все InquiryId в переменной, чтобы перейти к WHILE l oop. Я пытаюсь заполнить переменную через CTE, как показано ниже

DECLARE @inqIdsToClose TABLE (InquiryId int)
With CTE (InquiryId,InquirySubject,CreateDt,SendTo,[From],SendBy) as
(
    Select I.InquiryId,I.InquirySubject,I.CreateDt,I.SendTo,I.[From],U.Email as SendBy
    From Inquiries I
    Inner Join Users U
    ON I.[From] = U.UserID
    Where I.InquiryId Not In (Select InquiryId from InquiryReply)
    And I.InquiryStatusId  <> 5
    And DATEDIFF(day, I.CreateDt, getdate()) >=7
)
Insert into @inqIdsToClose
Select InquiryId from CTE
Print @inqIdsToClose;

Но SQL Сервер не позволяет мне заполнить @ inqIdsToClose

InquiryId, возвращаемый CTE, несколько, Позже я буду использовать l oop.

1 Ответ

2 голосов
/ 12 июля 2020

Вам не хватало терминатора после того, как вы объявили свою табличную переменную

Пример

DECLARE @inqIdsToClose TABLE (InquiryId int);

with cte as (
    -- Dummy query
    Select SomeVal=1
    Union All
    Select SomeVal=2
)
Insert Into @inqIdsToClose Select SomeVal from cte

Select * from @inqIdsToClose

Возвращает

InquiryId
1
2
...