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

时间:2016-08-04 19:06:59

标签: sql-server tsql

我有一个SQL查询,当WHERE语句只包含一个语句时可以正常工作,但是当它同时包含两个语句时却没有。当我使用两个WHERE语句时,我得到“将数据类型转换为varchar到数字时出错”。 (错误发生在第二个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处获得服务的人员列表。)

思想?

1 个答案:

答案 0 :(得分:0)

我更改了代码,以便在匹配之后才转换日期(优点,@ JonathanShields),但我一直收到错误消息。

我最终将日期范围更改为更长的时间段,突然之间就有效了。我想在给定的时间范围内没有符合这两个标准的记录,但它没有返回0记录的结果,而是给了我错误信息。

感谢大家的帮助。