2017-10-17 9 views
1

サブクエリから値を挿入するときに次の問題があります。SQL Server:EXISTSでサブクエリが導入されていない場合、selectリストに指定できる式は1つだけです

私はこのクエリからすべての値を挿入する:

(SELECT INFORMATION_SCHEMA.COLUMNS.COLUMN_NAME + FORMAT(convert (datetime,date) , 'ddMMyyyy') +'EUR'+'0' as devID , 'XXX' as dev2 from kat.[dbo].[Conversions] LEFT OUTER JOIN INFORMATION_SCHEMA.COLUMNS on INFORMATION_SCHEMA.COLUMNS.TABLE_NAME = 'Conversions' and INFORMATION_SCHEMA.COLUMNS.ORDINAL_POSITION = 3) 

What this query returns is the following data (and more rows with the following format): Columns (devID & dev2) 
devID // dev2 
YYY05102017XXX0 // EUR 
XXX04102017XXX0 // EUR 
ZZZ03102017XXX0 // EUR 

This contains the data I want to insert but when inserting into a view: I receive the following error: 

Only one expression can be specified in the select list when the subquery is not introduced with EXISTS. 

This is the query to insert the values: 

insert into ConversionsTable(devID, dev2) values (
(SELECT INFORMATION_SCHEMA.COLUMNS.COLUMN_NAME + FORMAT(convert (datetime,date) , 'ddMMyyyy') +'EUR'+'0' as devID , 'XXX' as dev2 from kat.[dbo].[Conversions] LEFT OUTER JOIN INFORMATION_SCHEMA.COLUMNS on INFORMATION_SCHEMA.COLUMNS.TABLE_NAME = 'Conversions' and INFORMATION_SCHEMA.COLUMNS.ORDINAL_POSITION = 3)) 

あなたはどこが問題を見つけることができる知っていますか?

+1

あなたのインサートから 'VALUES'句を削除し、直接' INSERT INTOを行います。.. SELECT ... –

答えて

2

VALUESを削除してください:

insert into ConversionsTable(devID, dev2) 
SELECT INFORMATION_SCHEMA.COLUMNS.COLUMN_NAME + FORMAT(convert (datetime,date) , 'ddMMyyyy') +'EUR'+'0' as devID , 'XXX' as dev2 
from kat.[dbo].[Conversions] 
LEFT OUTER JOIN INFORMATION_SCHEMA.COLUMNS 
on (INFORMATION_SCHEMA.COLUMNS.TABLE_NAME = 'Conversions' 
and INFORMATION_SCHEMA.COLUMNS.ORDINAL_POSITION = 3) 
1

あなたはinsert . . . selectをしたいです。ただし、left joinは必要ありません。また

insert into ConversionsTable(devID, dev2) 
    select cols.COLUMN_NAME + FORMAT(convert(datetime, c.date), 'ddMMyyyy') + 'EUR' + '0' as devID, 
      'XXX' as dev2 
    from kat.[dbo].Conversions c join 
     INFORMATION_SCHEMA.COLUMNS cols 
     on cols.TABLE_NAME = 'Conversions' and c.ORDINAL_POSITION = 3; 

、あなたはあなたのクエリでTABLE_SCHEMAを含むべきである(二つのテーブルが異なるスキーマに同じ名前を持つことができます。

関連する問題