2016-08-04 31 views
-1

我有一個SQL查詢,當WHERE語句只包含一個語句,但不包含同時包含這兩個語句時正常工作。當我使用這兩個WHERE語句時,我得到「錯誤轉換數據類型爲varchar到數字。」 (錯誤發生在第二個SELECT語句中,而不是在CTE中)。使用多個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 

如果我包括一個或WHERE語句,它工作正常的其它。但是,如果我有這兩個陳述,我得到一個錯誤。

(期望的結果是人誰在單元251有一個服務後,他們有一個服務代碼(SVC_ID)106的列表)

的思考?

+0

'CDCLSVC.CLIENT_ID'和'SCEVENT.CLIENT_ID'的數據類型是什麼? –

+0

CLIENT_ID在兩個數據集中都是數字。 UNIT_ID也是數字。 – Kristin

+0

因此,如果我將它從「and UNIT_ID = 251」更改爲「和UNIT_ID> = 251」,我的代碼將工作。它適用於>符號。但是,當然,這不是我想要的。 – Kristin

回答

0

我更改了代碼,以便它不會將日期轉換爲匹配之後(優秀點,@JonathanShields),但我一直收到錯誤消息。

我最終改變了我的日期範圍到一個較長的時間,並突然它的工作。我想在給定的時間範圍內沒有符合兩個標準的記錄,但是不是返回0記錄的結果,而是給了我錯誤消息。

感謝大家的幫助。

相關問題