Sql server 使用多个WHERE语句时转换数据类型时出错

Sql server 使用多个WHERE语句时转换数据类型时出错,sql-server,tsql,Sql Server,Tsql,我有一个SQL查询,当WHERE语句只包含一条语句时可以正常工作,但当它同时包含两条语句时就不行了。当我使用这两个WHERE语句时,将数据类型转换为varchar到numeric时出错。错误发生在第二个SELECT语句中,而不是CTE中 这是我想要的代码: ;WITH cte_1 as( SELECT EVENT_ID ,CLIENT_ID ,convert(varchar(10), E.STARTDATE, 101) as R106_DATE FROM

我有一个SQL查询,当WHERE语句只包含一条语句时可以正常工作,但当它同时包含两条语句时就不行了。当我使用这两个WHERE语句时,将数据类型转换为varchar到numeric时出错。错误发生在第二个SELECT语句中,而不是CTE中

这是我想要的代码:

;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语句,它就可以正常工作。但是如果我有这两种说法,我会得到一个错误

期望的结果是在具有服务代码SVC_ID 106之后在单元251处具有服务的人的列表


想法?

我更改了代码,使其在比赛优异点@Jonathansields之后才转换日期,但我一直收到错误消息

我最终改变了我的约会范围,延长了一段时间,突然间它起了作用。我猜在给定的时间范围内没有满足这两个条件的记录,但它没有返回0个记录的结果,而是给了我错误消息


谢谢大家的帮助

CDCLSVC.CLIENT_ID和SCEVENT.CLIENT_IDCLIENT_ID上的数据类型在两个数据集中都是数字。UNIT\u ID也是数字。因此,如果我将其从和UNIT\u ID=251更改为和UNIT\u ID>=251,则上面的代码可以工作。它与>符号一起工作。但是,当然,这不是我想要的。好吧,这不是加入。那么SCEVENT.SVC_ID和CDCLSVC.UNIT_ID呢?会出现什么错误?如果您从CTE获取第一个查询,那么该查询本身是否正常工作?而且,R106_日期实际上是一个varchar,那么什么是beg_日期呢?我想你可能希望这两个都是日期,否则你的结果可能是错误的。