VBAからストアドプロシージャを実行中に問題が発生しました。列名をパラメータの文字列として渡してから、case文を使用したいデータ内の実際の列名を選択します。動的列名をSQL Serverに渡すときのデータ型エラー
このクエリは、通過する列名(@FACTOR)が整数である場合にうまく機能しますが、varcharの場合は正しくありません。
データ型nvarcharをfloatに変換中にエラーが発生しました。以下の例では、より簡潔である
WITH T0 AS (
SELECT DISTINCT
CASE @FACTOR
WHEN 'DRVREC' THEN DRIVINGRECORD --OK
WHEN 'POAGE' THEN POAGE
WHEN 'ANNUALKM' THEN AMC_VH_ANNL_KM
WHEN 'DAILYKM' THEN AMC_VH_KM_TO_WRK
WHEN 'RATETERR' THEN AMC_VH_RATE_TERR --OK
WHEN 'BROKERNAME' THEN MASTERBROKER_NAME
WHEN 'DRVCLASS' THEN DRIVINGCLASS -- OK
WHEN 'VEHAGE' THEN VEH_AGE -- OK
WHEN 'YEARSLIC' THEN YRSLICENSE
WHEN 'COVERAGECODE' THEN COVERAGECODE
ELSE NULL END AS FACTOR FROM DBO.Automation_Data
),
...
...
それとも:
は、ここに私のコードです
DECLARE @FACTOR varchar(50)
SELECT @FACTOR = 'NOT_A_VARCHAR'
SELECT CASE @FACTOR
WHEN 'A_VARCHAR' THEN COLUMNNAME1
WHEN 'NOT_A_VARCHAR' THEN COLUMNNAME2
ELSE NULL END AS FACTOR FROM dbo.myTable
^これは動作しますが、@FACTOR = 'A_VARCHAR'
ならば、私はエラーを取得します。
ありがとうございます!
UPDATE **********************************:
ように見えますケースステートメント自体の問題?
私のcase文にvarcharオプションしかない場合は、クエリが実行されます。ケースステートメントの2番目の部分をコメント解除するとエラーが表示されます。
は、変換(すべての列の周りnvarchar型は、提案のための – artm
感謝を選択ませ鋳物の量や変換が動作するように見えない私の更新を参照してください、入れてください – stobin
あなたのコメントは実際には正しいです:私はそれが必要ではないと思ったので私がテストしていたときにすべてのケースの選択肢を変換していませんでした。大文字と小文字のオプションが選択されず、それでもNVARCHARに変換する必要があります。 – stobin