我正在编写要在日期和日期之间使用小的日期时间过滤日期的过程。
从日期开始,在某些情况下可以为空,而在比较时,到日期也可以为零。
起始日期或截止日期可以为null时的过滤日期。

我尝试了以下查询,但它给了我错误。

 SELECT RQ.int_REPS_QUES_DIFF_LEVEL,SUM(1) AS NoOFDificultyQuestion FROM    
 REPS_TEST_QUES_ASSIGNED RQA    
 INNER JOIN REPS_QUESTION RQ ON RQA.int_REPS_TEST_QUES_ASSG_QUESID=RQ.PK_REPS_QUES_ID   
 WHERE int_REPS_TEST_ID IN(   
 SELECT FK_TEST_ID FROM STUDENT_EXAM SE WHERE FK_USER_ID=56 AND SE.FK_REPS_BATCH_ID=466  
    and CASE  
WHEN @FromDate!=NULL AND @ToDate!=NULL      
     THEN dat_STUD_EXAM_FINALEND >= @FromDate AND dat_STUD_EXAM_FINALEND <= @ToDate  
WHEN @FromDate!=NULL AND @ToDate=NULL   
     THEN  dat_STUD_EXAM_FINALEND >= @FromDate   
WHEN @FromDate=NULL AND @ToDate!=NULL   
     THEN  dat_STUD_EXAM_FINALEND <= @ToDate 
END 
 )    
 strong textGROUP BY RQ.int_REPS_QUES_DIFF_LEVEL   

我在错误
THEN dat_STUD_EXAM_FINALEND >= @FromDate AND dat_STUD_EXAM_FINALEND <= @ToDate   

这行请告诉我我哪里错了

请您参考如下方法:

代替

WHEN @FromDate!=NULL AND @ToDate!=NULL 

采用
WHEN @FromDate IS NOT NULL AND @ToDate IS NOT NULL 

IS [NOT] NULL

如果某些内容是 NULL,则它在T-SQL中是未定义的,因此您无法与之进行比较。如果两个(或两个)值之一均为 =,则 !=false都将生成 NULL


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!