繁体   English   中英

多个CTE查询,将单个列值分配给局部变量

[英]Multiple CTE Queries, assign single column value to local variable

这是我的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

正如Gordan所说,您不能分配变量并在同一select语句中返回select。 如果需要分配局部变量,最好的选择是将数据放入临时表中,然后从中进行选择。 不过,您的问题尚不清楚-不确定您选择的最终目标是什么。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM