WITH CTE1 AS (
...
). CTE2 AS (
...
)
INSERT #temp(...)
SELECT ...
FROM CTE2
Save output of a CTE query to a temp table
How do I save the output of this query to a temp table?
;WITH CTE1 AS
(
SELECT ID,CustNum,OrderNumber,Value, Description
,ROW_NUMBER()OVER(PARTITION BY ID ORDER BY Value)AS [Counter]
FROM @test CROSS APPLY STRING_SPLIT(OrderNumber,'-')
),CTE2 AS
(
SELECT ID,CustNum,OrderNumber,Value,[Counter],Value AS Result, Description
FROM CTE1 WHERE [Counter] = 1
UNION ALL
SELECT C1.ID,C1.CustNum,C1.OrderNumber,C1.value,C1.[Counter],C2.Result+'-'+C1.value, C1.Description
FROM CTE1 C1 JOIN CTE2 C2 ON C1.ID = C2.ID AND C1.[Counter] = C2.[Counter] + 1
)
SELECT ID,CustNum,OrderNumber,[Counter],Value,Result
,LAG(Result)OVER(PARTITION BY ID ORDER BY [Counter])AS Misc
,CASE WHEN [Counter]=4 THEN 'NA' ELSE '' END AS Col1
,CASE WHEN [Counter]=2 THEN 'None' ELSE '' END AS Col2
,Description
FROM CTE2
--- DDL
DECLARE @test TABLE (ID INT PRIMARY KEY, CustNum INT, OrderNumber VARCHAR(MAX), Description VARCHAR(50));
INSERT @test VALUES
(9001, 1234, '11111-22222-33333-444444', 'Test1'),
(9002, 5678, '55555-66666-77777-888888', 'Test2');
Developer technologies Transact-SQL
7 answers
Sort by: Most helpful
-
Erland Sommarskog 121.4K Reputation points MVP Volunteer Moderator
2022-07-24T21:56:32.667+00:00 -
Jingyang Li 5,896 Reputation points Volunteer Moderator
2022-07-25T01:16:00.207+00:00 You can:
SELECT * INTO #NewTable FROM cteTemp -
LiHong-MSFT 10,056 Reputation points
2022-07-25T01:22:51.913+00:00 Hi @Hursh
You could put theSelect ...CASE WHEN ...
into another CTE, like this:DECLARE @test TABLE (ID INT PRIMARY KEY, CustNum INT, OrderNumber VARCHAR(MAX), Description VARCHAR(50)); INSERT @test VALUES (9001, 1234, '11111-22222-33333-444444', 'Test1'), (9002, 5678, '55555-66666-77777-888888', 'Test2'); ;WITH CTE1 AS ( SELECT ID,CustNum,OrderNumber,Value, Description ,ROW_NUMBER()OVER(PARTITION BY ID ORDER BY Value)AS [Counter] FROM @test CROSS APPLY STRING_SPLIT(OrderNumber,'-') ),CTE2 AS ( SELECT ID,CustNum,OrderNumber,Value,[Counter],Value AS Result, Description FROM CTE1 WHERE [Counter] = 1 UNION ALL SELECT C1.ID,C1.CustNum,C1.OrderNumber,C1.value,C1.[Counter],C2.Result+'-'+C1.value, C1.Description FROM CTE1 C1 JOIN CTE2 C2 ON C1.ID = C2.ID AND C1.[Counter] = C2.[Counter] + 1 ),CTE3 AS ( SELECT ID,CustNum,OrderNumber,[Counter],Value,Result ,LAG(Result)OVER(PARTITION BY ID ORDER BY [Counter])AS Misc ,CASE WHEN [Counter]=4 THEN 'NA' ELSE '' END AS Col1 ,CASE WHEN [Counter]=2 THEN 'None' ELSE '' END AS Col2 ,Description FROM CTE2 ) SELECT * INTO #TEMP FROM CTE3 SELECT * FROM #TEMP
Best regards,
LiHong -
Khalil Kazi 1 Reputation point
2022-07-25T11:57:37.237+00:00 ;WITH CTE1 AS
(
SELECT ID,CustNum,OrderNumber,Value, Description
,ROW_NUMBER()OVER(PARTITION BY ID ORDER BY Value)AS [Counter]
FROM @test CROSS APPLY STRING_SPLIT(OrderNumber,'-')
),CTE2 AS
(
SELECT ID,CustNum,OrderNumber,Value,[Counter],Value AS Result, Description
FROM CTE1 WHERE [Counter] = 1
UNION ALL
SELECT C1.ID,C1.CustNum,C1.OrderNumber,C1.value,C1.[Counter],C2.Result+'-'+C1.value, C1.Description
FROM CTE1 C1 JOIN CTE2 C2 ON C1.ID = C2.ID AND C1.[Counter] = C2.[Counter] + 1
)
SELECT ID,CustNum,OrderNumber,[Counter],Value,Result
,LAG(Result)OVER(PARTITION BY ID ORDER BY [Counter])AS Misc
,CASE WHEN [Counter]=4 THEN 'NA' ELSE '' END AS Col1
,CASE WHEN [Counter]=2 THEN 'None' ELSE '' END AS Col2
,Description
INTO #TempTable
FROM CTE2 -
Khalil Kazi 1 Reputation point
2022-07-25T11:58:32.007+00:00 ;WITH CTE1 AS
(
SELECT ID,CustNum,OrderNumber,Value, Description
,ROW_NUMBER()OVER(PARTITION BY ID ORDER BY Value)AS [Counter]
FROM @test CROSS APPLY STRING_SPLIT(OrderNumber,'-')
),CTE2 AS
(
SELECT ID,CustNum,OrderNumber,Value,[Counter],Value AS Result, Description
FROM CTE1 WHERE [Counter] = 1
UNION ALL
SELECT C1.ID,C1.CustNum,C1.OrderNumber,C1.value,C1.[Counter],C2.Result+'-'+C1.value, C1.Description
FROM CTE1 C1 JOIN CTE2 C2 ON C1.ID = C2.ID AND C1.[Counter] = C2.[Counter] + 1
)
SELECT ID,CustNum,OrderNumber,[Counter],Value,Result
,LAG(Result)OVER(PARTITION BY ID ORDER BY [Counter])AS Misc
,CASE WHEN [Counter]=4 THEN 'NA' ELSE '' END AS Col1
,CASE WHEN [Counter]=2 THEN 'None' ELSE '' END AS Col2
,Description
into #temp
FROM CTE2