2016-06-27 4 views
0

データを別のテーブルから選択した後、あるテーブルにデータを挿入する次のクエリがあります。テーブルから選択して別のテーブルに挿入すると、タイプエラーが発生する

問題は、いずれかの列のデータ型が一致しないことです。私は以下の質問を単純化しました。

INSERT INTO tbl.LogTable (
    [SelPartNo], -- This does not match, see below 
    ) 
SELECT TOP 1 
    IF([SelPartNo] = 'False', NULL, [SelPartNo], 
FROM tbl.MyTable 
WHERE ID = '20358' 
ORDER BY CreateDate DESC 
SelPartNo

最初は整数であり、第二はVarCharあります。ほとんどの場合、SelPartNoは2番目のもの(tbl.MyTable)はNULLまたは整数ですが、問題は発生しません。しかし場合によっては値が "False"であるため、NULLを返す必要があります。

私はIF文を試しましたが、文法上の誤りがあり、これが正しい方法であるかどうかはわかりません。

+0

括弧がありません。これは本当にSQL Server上で実行しようとした逐語的なコードですか? –

+1

また、IFは、IIFでなければなりません。 –

+0

これは簡単なコードです。私は助けが必要なのは5号線です。 – MSOACC

答えて

1

私はIFは、関数、少なくともないあなたがSELECT文で使用することができるものであるとは思いません。しかしCASE WHEN ... ENDはあなたの友人です:

INSERT INTO tbl.LogTable (
    [SelPartNo] 
    ) 
SELECT TOP 1 
    CASE WHEN [SelPartNo] = 'False' THEN NULL ELSE [SelPartNo] END 
FROM tbl.MyTable 
WHERE ID = '20358' 
ORDER BY CreateDate DESC 
+0

@Shaneisあなたは正しいです、私はあまりにも早く話しました:-( –

関連する問題