0

SQL Server 2008 R2 を使用しています

挿入する前に二重データを回避するために、私のSQLステートメントは次のようになります。

select * from LETTRE_VOIT_TEMP where NOT EXISTS
(
select * from LETTRE_VOIT_FINAL lv
where lv.NOID = LETTRE_VOIT_TEMP.NOID AND
      lv.CODE_DEST = LETTRE_VOIT_TEMP.CODE_DEST AND
      lv.CODE_CLIENT = LETTRE_VOIT_TEMP.CODE_CLIENT AND
      lv.DATE_CLOTURE = LETTRE_VOIT_TEMP.DATE_CLOTURE AND 
      lv.DATE_CLOTUR_REEL =  LETTRE_VOIT_TEMP.DATE_CLOTUR_REEL
) 

これはうまくいきますが、条件を追加したいと思います:

  • データの場合、LETTRE_VOIT_TEMP.DATE_CLOTURE is null比較したくありません。
  • データの場合、LETTRE_VOIT_TEMP.DATE_CLOTUR_REEL is null比較したくない

私はこのように変更しました:

select * from LETTRE_VOIT_TEMP where NOT EXISTS
(
select * from LETTRE_VOIT_FINAL lv
where lv.NOID = LETTRE_VOIT_TEMP.NOID AND
      lv.CODE_DEST = LETTRE_VOIT_TEMP.CODE_DEST AND
      lv.CODE_CLIENT = LETTRE_VOIT_TEMP.CODE_CLIENT AND
      case LETTRE_VOIT_TEMP.DATE_CLOTURE 
       when is not null then  lv.DATE_CLOTURE = LETTRE_VOIT_TEMP.DATE_CLOTURE AND 
       end
      case LETTRE_VOIT_TEMP.DATE_CLOTUR_REEL 
       when is not null then   lv.DATE_CLOTUR_REEL =  LETTRE_VOIT_TEMP.DATE_CLOTUR_REEL
       end

) 

構文エラーが発生します。

4

2 に答える 2

0

あなたの CASE ステートメントは正しくありません。正しい構文は次のとおりです。CASE WHEN {condition} THEN {result} END

SELECT * 
FROM LETTRE_VOIT_TEMP where NOT EXISTS
(
    SELECT *
    FROM LETTRE_VOIT_FINAL lv
    WHERE lv.NOID = LETTRE_VOIT_TEMP.NOID 
    AND lv.CODE_DEST = LETTRE_VOIT_TEMP.CODE_DEST 
    AND lv.CODE_CLIENT = LETTRE_VOIT_TEMP.CODE_CLIENT 
    AND CASE WHEN LETTRE_VOIT_TEMP.DATE_CLOTURE IS NOT NULL THEN lv.DATE_CLOTURE = LETTRE_VOIT_TEMP.DATE_CLOTURE END
    AND CASE WHEN LETTRE_VOIT_TEMP.DATE_CLOTUR_REEL IS NOT NULL THEN lv.DATE_CLOTUR_REEL =  LETTRE_VOIT_TEMP.DATE_CLOTUR_REEL END

) 

1 = 1別の構文エラーを回避するために、CASE に ELSE ステートメントを追加する必要がある場合があります。

于 2013-03-15T14:15:18.423 に答える
0

この形式では null をテストできません

CASE field WHEN IS NULL THEN x

ただし、次のようにテストできます。

CASE WHEN field IS NULL THEN x

SQL Server では、NULL ではなく、次の構文を使用できることに注意してください。

CASE field  WHEN condition1 THEN x
            WHEN condition2 THEN y
            ELSE z
END
于 2013-03-15T14:16:07.340 に答える