用 CTE 结果填充 Temp table?

Fill Temp table with CTE Resut?

我有 2 个 CTE 他们都 select 给我一些记录。其中一个是 X ,另一个是 Y 。另一方面,我有 2 个与 CTE 同名的临时 table。我想用 CTE 结果填充这些温度 table。最后我想在一个结果中显示这些温度 table。 我的问题是我在这里只能使用一次 CTE 数据源 是我的代码

        use fidilio
;WITH Fidili_CTE1X ( FirstName,LastName,SubscribedDate, RegisteredDate, pers)
AS
(
SELECT 
FirstName,LastName,SubscribedDate, RegisteredDate,dbo.GetShDate(RegisteredDate) as pers
FROM ClubProfile CP 
WHERE CP.CardNumber IS NOT NULL
AND IsExpired =0
)

SELECT LastName,pers FROM Fidili_CTE1X
  CREATE TABLE #TEMPX
 (
      Lastname nvarchar(max) ,pers varchar(10)
 )
 Insert into #TEMPX 
 select * from Fidili_CTE1X
 ;WITH FIDILIO_CTE2Y(irstName,LastName,SubscribedDate, RegisteredDate,PERS)
 AS
 (
   SELECT 
FirstName,LastName,SubscribedDate, RegisteredDate,dbo.GetShDate(RegisteredDate) as pers
FROM ClubProfile CP 
WHERE CP.CardNumber IS NOT NULL
)


SELECT  LASTNAME,PERS FROM FIDILIO_CTE2Y

CREATE TABLE #TEMPY
(
Lastname nvarchar(max) ,pers varchar(10)
)
Insert into #TEMPY
select * from FIDILIO_CTE2Y

我认为您在这里的误解是 CTE 没有 SELECT 任何数据。他们创建了一个table。您必须以与任何其他 table 相同的方式与该 table 互动。

但是,您的脚本比需要的复杂得多。这会有什么问题?

SELECT FirstName,LastName,SubscribedDate, RegisteredDate,dbo.GetShDate(RegisteredDate) as pers
INTO #TEMPY
FROM ClubProfile CP 
WHERE CP.CardNumber IS NOT NULL

这与您的脚本具有相同的结果,只是由于脚本中的错误,我无法判断您真正想要的列。

使用这个

use fidilio
;WITH Fidili_CTE1X ( FirstName,LastName,SubscribedDate, RegisteredDate, pers)
AS
(
SELECT 
FirstName,LastName,SubscribedDate, RegisteredDate,dbo.GetShDate(RegisteredDate) as pers
FROM ClubProfile CP 
WHERE CP.CardNumber IS NOT NULL
AND IsExpired =0
)

SELECT LastName,pers  into #TEMPX  FROM Fidili_CTE1X

 ;WITH FIDILIO_CTE2Y(irstName,LastName,SubscribedDate, RegisteredDate,PERS)
 AS
 (
   SELECT 
FirstName,LastName,SubscribedDate, RegisteredDate,dbo.GetShDate(RegisteredDate) as pers
FROM ClubProfile CP 
WHERE CP.CardNumber IS NOT NULL
)
SELECT  LASTNAME,PERS  into #TEMPY FROM FIDILIO_CTE2Y

select * from FIDILIO_CTE2Y