Select vev.*
will select columns only from valid_element_value
table so remove vev.*
from select
and mention the columns
from all four table in same order as your Insert
column list
Considering the target tables are created with all the required column in target database
Update : Looks like you want to insert into four different tables. Then you need four different Insert
statements
INSERT INTO target_database.SCHEMA.target_valid_element_value
(vev_col1,
vev_col2,
..)
SELECT vev.col1,
vev.col2,
..
FROM [dbo].[metadata_document_set] mds
INNER JOIN [dbo].[document_metadata] dm
ON mds.metadata_document_set_id = dm.metadata_document_set_id
INNER JOIN [dbo].[segment_metadata] sm
ON dm.document_metadata_id = sm.document_metadata_id
INNER JOIN [dbo].[element_metadata] em
ON sm.segment_metadata_id = em.segment_metadata_id
INNER JOIN [dbo].[valid_element_value] vev
ON em.element_metadata_id = vev.element_metadata_id
WHERE mds.code = 'PA'
INSERT INTO target_database.SCHEMA.target_element_metadata
(em_col1,
em_col2,
..)
SELECT em.col1,
em.col2,
..
FROM [dbo].[metadata_document_set] mds
INNER JOIN [dbo].[document_metadata] dm
ON mds.metadata_document_set_id = dm.metadata_document_set_id
INNER JOIN [dbo].[segment_metadata] sm
ON dm.document_metadata_id = sm.document_metadata_id
INNER JOIN [dbo].[element_metadata] em
ON sm.segment_metadata_id = em.segment_metadata_id
INNER JOIN [dbo].[valid_element_value] vev
ON em.element_metadata_id = vev.element_metadata_id
WHERE mds.code = 'PA'
Regarding Identity, If you have identity
column in your target tables and you want insert values from source for those columns as well then
set Identity_insert target_table ON
<<Insert statement>>
set Identity_insert target_table OFF
If you dont want to explicitly insert values into identity column then dont add identity column in Insert
& Select
column list