我有一个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处获得服务的人员列表。)
思想?
答案 0 :(得分:0)
我更改了代码,以便在匹配之后才转换日期(优点,@ JonathanShields),但我一直收到错误消息。
我最终将日期范围更改为更长的时间段,突然之间就有效了。我想在给定的时间范围内没有符合这两个标准的记录,但它没有返回0记录的结果,而是给了我错误信息。
感谢大家的帮助。