Несколько запросов CTE, присвойте значение одного столбца локальной переменной - PullRequest
0 голосов
/ 13 февраля 2019

Это мой sql запрос.Как я могу присвоить результат Count_CTE.TotalRecords моей локальной назначенной переменной?Кто-нибудь, пожалуйста ???

DECLARE  @Totalrecords Bigint =0;

;WITH Main_Query_CTE AS(

SELECT 
U.Id,
U.Username,
P.Id as ProfileId,
P.Firstname,
P.Lastname 
FROM   [Dbo].[User] U
INNER JOIN [Profile] P
ON U.Id = P.Userid 
WHERE  AND U.[Status] <>0

),
Count_CTE AS ( SELECT COUNT(*) as TotalRecords FROM Main_Query_CTE )

SELECT * FROM Main_Query_CTE ,Count_CTE
ORDER BY Main_Query_CTE.Id
OFFSET 0 ROWS
FETCH NEXT 20 ROWS ONLY

1 Ответ

0 голосов
/ 13 февраля 2019

Как сказал Гордан, вы не можете присвоить переменную И вернуть выбор в том же операторе выбора.Лучше всего, если вам нужно назначить локальную переменную, - просто выбросить данные во временную таблицу и затем сделать выбор.Ваш вопрос немного неясен, хотя - не уверен, какова ваша конечная цель выбора.

DECLARE  @Totalrecords Bigint =0;

SELECT 
U.Id,
U.Username,
P.Id as ProfileId,
P.Firstname,
P.Lastname 
into #temp
FROM   [Dbo].[User] U
INNER JOIN [Profile] P
ON U.Id = P.Userid 
WHERE  AND U.[Status] <> 0  

select @Totalrecords = COALESCE(COUNT(*),0) FROM #temp;

SELECT *
FROM #temp
ORDER BY id
OFFSET 0 ROWS
FETCH NEXT 20 ROWS ONLY
...