用 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
我有 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