0

給与表があります。この給与フィールドでは、Lacks と千を 1 つの列に追加します。したがって、select ステートメントを使用したいと思います。

私のクエリは

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

出力

INSERT INTO jobs(Budget) VALUES(0,85000)
INSERT INTO jobs(Budget) VALUES(200000,5000)

ここでI want to add lacks and thousands、追加したいという意味です

  • 0,85000 =85000

  • 200000,5000=205000

    上記のクエリで。

誰にもアイデアがありますか?

4

1 に答える 1

0

出力クエリには、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
于 2013-04-17T09:46:29.693 に答える