2016-08-04 10 views
-1

WHEREステートメントに1つのステートメントのみが含まれていて、同時に両方のステートメントが含まれている場合にうまく動作するSQLクエリがあります。両方のWHERE文を使用すると、「データ型をvarcharから数値に変換中にエラーが発生します。」 (エラーは、CTEではなく、2番目のSELECT文で発生しています)。複数のWHEREステートメントを使用するとデータ型を変換する際にエラーが発生する

このコードは、私が欲しいものです:

;WITH cte_1 as(
SELECT EVENT_ID 
     ,CLIENT_ID 
     ,convert(varchar(10), E.STARTDATE, 101) as R106_DATE 
FROM SCEVENT 
WHERE STARTDATE>='06/01/2016' AND STARTDATE<='06/30/2016' 
     and SVC_ID=106 
) 

SELECT R.* 
     ,convert(varchar(10), S.BEG_DATE, 101) as SVC_DATE 
     ,S.UNIT_ID 
FROM cte_1 R 
     JOIN CDCLSVC S 
      on R.CLIENT_ID=S.CLIENT_ID 
WHERE R106_DATE<=BEG_DATE 
     and UNIT_ID=251 

私は文、それが正常に動作し、どちらか一方が含まれている場合。しかし、私は両方のステートメントがある場合、私はエラーが発生します。

(所望の結果は、彼らがサービスコードを持っていた後にユニット251でサービスを持っていた人(SVC_ID)106のリストである)

思考?

+0

'CDCLSVC.CLIENT_ID'と' SCEVENT.CLIENT_ID'のデータ型は何ですか –

+0

CLIENT_IDは両方のデータセットの数値です。 UNIT_IDも数値です。 – Kristin

+0

したがって、 "UNIT_ID = 251"から "UNIT_ID> = 251"に変更すると上記のコードが動作します。これは>記号で動作します。しかし、もちろん、これは私が望むものではありません。 – Kristin

答えて

0

マッチ後(最高点、@JonathanShields)まで日付を変換しないようにコードを変更しましたが、エラーメッセージが表示され続けました。

私は長い期間に私の日付範囲を変更し、突然それが働いた。私は両方の基準を満たしているが、0のレコードの結果を返すのではなく、私にエラーメッセージを与えた所与の時間枠内のレコードがなかったと思います。

皆様のご協力ありがとうございます。

関連する問題