出力クエリには、Budget という名前でロードされる job テーブルに指定された 1 つの列があります。VALUES 句には 2 つの値が含まれます。これにより、次のエラーがスローされます。
Msg 110, Level 15, State 1, Line 1
There are fewer columns in the INSERT statement than values specified in the VALUES clause. The number of values in the VALUES clause must match the number of columns specified in the INSERT statement.
コードをこれに変更すると、挿入が機能します。ただし、2 つの列にデータを入力するだけで、値を加算することはありません。
SELECT TOP(10) 'INSERT INTO jobs(Budgetm Lacks) VALUES('+
CAST(SUBSTRING(CAST(r.Budget AS VARCHAR(50)), 0, PATINDEX('%laks%', r.Budget))*100000 AS VARCHAR(50))
+ ',' +CAST(SUBSTRING(CAST(r.Budget AS VARCHAR(50)), PATINDEX('%laks%', r.Budget) + 4
,patindex('%Thousands%', r.Budget) - PATINDEX('%laks%', r.Budget) - 4)* 1000 AS
VARCHAR(50))+')'
FROM dbo.requirementsdetailsfororganization r
2 つの列を合計列に追加する場合は、次のコードを使用できます。
SELECT TOP(10) 'INSERT INTO jobs(Budgetm Lacks) VALUES('+
CAST(SUBSTRING(CAST(r.Budget AS VARCHAR(50)), 0, PATINDEX('%laks%', r.Budget))*100000 AS VARCHAR(50))
+ ',' +CAST(SUBSTRING(CAST(r.Budget AS VARCHAR(50)), PATINDEX('%laks%', r.Budget) + 4
,patindex('%Thousands%', r.Budget) - PATINDEX('%laks%', r.Budget) - 4)* 1000 AS
VARCHAR(50)) + CAST(SUBSTRING(CAST(r.Budget AS VARCHAR(50)), 0, PATINDEX('%laks%', r.Budget))*100000 AS VARCHAR(50))
+ ' + ' +CAST(SUBSTRING(CAST(r.Budget AS VARCHAR(50)), PATINDEX('%laks%', r.Budget) + 4
,patindex('%Thousands%', r.Budget) - PATINDEX('%laks%', r.Budget) - 4)* 1000 AS
VARCHAR(50)) + ')'
FROM dbo.requirementsdetailsfororganization r
これにより、3 番目の列に 2 つの列の合計が入力されます。Budget 列に 2 つの列の合計を入力するだけで、別の列がない場合は、VALUES 句でコンマを + 記号に変更するだけです。
SELECT TOP(10) 'INSERT INTO jobs(Budget) VALUES('+
CAST(SUBSTRING(CAST(r.Budget AS VARCHAR(50)), 0, PATINDEX('%laks%', r.Budget))*100000 AS VARCHAR(50))
+ '+' +CAST(SUBSTRING(CAST(r.Budget AS VARCHAR(50)), PATINDEX('%laks%', r.Budget) + 4
,patindex('%Thousands%', r.Budget) - PATINDEX('%laks%', r.Budget) - 4)* 1000 AS VARCHAR(50))+')'
FROM dbo.requirementsdetailsfororganization r