簡體   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