Reputation: 503
Question: How to Insert Complicated select data Into temp Table in sql 2012
select ROW_NUMBER() OVER(order by ppt.type) as Item_code,
ppt.type type,
...,
...,
...,
'11/02/19 09:51' Created_dt
from product psi
inner join [DB1]..items ios on ios.icode=psi.icode
inner join [DB2]..types ppt on ppt.type=ios.type
I have Tried following solution
select * into #temptable from
(select ROW_NUMBER() OVER(order by ppt.type) as Item_code,
ppt.type type,
...,
...,
...,
'11/02/19 09:51' Created_dt
from product psi
inner join [DB1]..items ios on ios.icode=psi.icode
inner join [DB2]..types ppt on ppt.type=ios.type)
I got following Error
Incorrect syntax near ')'.
When I am Normally running select statement i am getting expected data
Upvotes: 0
Views: 1379
Reputation: 1178
The problem is, you are inserting data from an unnamed data source to a table.
select * into #temptable from
(select ROW_NUMBER() OVER(order by ppt.type) as Item_code,
ppt.type type,
...,
...,
...,
'11/02/19 09:51' Created_dt
from product psi
inner join [DB1]..items ios on ios.icode=psi.icode
inner join [DB2]..types ppt on ppt.type=ios.type) as tbl
Just go with this and your problem will be solved. I have just added a alias for the source you are inserting data.
Upvotes: 1
Reputation: 2475
The following code is correct as far as syntax goes:
SELECT *
INTO #Temptable
FROM
(
SELECT ROW_NUMBER() OVER(ORDER BY Ppt.Type) AS Item_Code,
Ppt.Type AS Type,
'11/02/19 09:51' AS Created_Dt
FROM Product AS Psi
INNER JOIN Db1..Items AS Ios ON Ios.Icode = Psi.Icode
INNER JOIN Db2..Types AS Ppt ON Ppt.Type = Ios.Type );
Normally, you could capture the logic in a CTE and insert the CTE in your temp table.
USE SomeDB;
WITH CTE AS
(
SELECT *
FROM
(
SELECT ROW_NUMBER() OVER(ORDER BY Ppt.Type) AS Item_Code,
Ppt.Type AS Type,
'11/02/19 09:51' AS Created_Dt
FROM Product AS Psi
INNER JOIN Db1..Items AS Ios ON Ios.Icode = Psi.Icode
INNER JOIN Db2..Types AS Ppt ON Ppt.Type = Ios.Type )
)
INSERT INTO #T
SELECT * FROM CTE
Upvotes: 2