2016-08-04 66 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记录的结果,而是给了我错误消息。

感谢大家的帮助。

相关问题