Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SQL中使用AND语句时的大小写_Sql_Sql Server - Fatal编程技术网

在SQL中使用AND语句时的大小写

在SQL中使用AND语句时的大小写,sql,sql-server,Sql,Sql Server,我有这样一个问题: SELECT CASE WHEN (CONVERT(INT, (datepart(DD, A.CIDATE))) AND Year(getDate()) = 2016 ) <= 15 THEN CONVERT(INT,(datepart(MM,A.CIDATE))) WHEN CONVERT(INT, (datepart(DD, A.CIDATE))) > 15 THEN CON

我有这样一个问题:

SELECT  
    CASE 
       WHEN (CONVERT(INT, (datepart(DD, A.CIDATE))) AND Year(getDate()) = 2016 ) <= 15
          THEN CONVERT(INT,(datepart(MM,A.CIDATE)))  
       WHEN CONVERT(INT, (datepart(DD, A.CIDATE))) > 15
          THEN CONVERT(INT, (datepart(MM, A.CIDATE))) + 1
       ELSE 0
    END AS MASA_PAJAK
FROM
    V_CLAIM_INTERNAL A
它正在工作,但当我添加和YeargetDate=2016时,它会抛出一个错误:

Msg 4145,第15级,状态1,第1行 在预期条件的上下文中指定的非布尔型表达式,靠近“AND”

我也尝试转换,但仍然有相同的错误

  SELECT 
      CASE 
         WHEN ((CONVERT(INT, (datepart(DD, A.CIDATE))) AND (convert(int, Year(getDate()) = 2016 ))) <= 15  
            THEN CONVERT(INT, (datepart(MM, A.CIDATE))) 
         WHEN CONVERT(INT, (datepart(DD, A.CIDATE))) > 15 
            THEN CONVERT(INT, (datepart(MM, A.CIDATE))) + 1 
         ELSE 0  
      END AS MASA_PAJAK
  FROM         
      V_CLAIM_INTERNAL A

我的问题是什么

这可能是您打算做的:

SELECT  CASE 
            WHEN (CONVERT(INT,(datepart(DD,A.CIDATE)))<= 15 AND Year(getDate()) = 2016 )   THEN  CONVERT(INT,(datepart(MM,A.CIDATE)))  
            WHEN  CONVERT(INT,(datepart(DD,A.CIDATE))) > 15 THEN CONVERT(INT,(datepart(MM,A.CIDATE)))+1
        ELSE 0  END AS MASA_PAJAK
FROM    V_CLAIM_INTERNAL A
SELECT CASE WHEN DATEPART(DD, A.CIDATE) <= 15 AND YEAR(GETDATE()) = 2016
            THEN DATEPART(MM, A.CIDATE)
            WHEN DATEPART(DD, A.CIDATE) > 15
            THEN DATEPART(MM, A.CIDATE) + 1
            ELSE 0
       END AS MASA_PAJAK
FROM V_CLAIM_INTERNAL A
请注意,您不需要转换/强制转换调用DATEPART的结果,因为它已返回一个整数。

尝试以下查询:

SELECT  CASE WHEN datepart(DD,A.CIDATE)<= 15 AND
              Year(getDate()) = 2016 
         THEN datepart(MM,A.CIDATE)
         WHEN datepart(DD,A.CIDATE) > 15
         THEN datepart(MM,A.CIDATE) + 1
         ELSE 0
    END AS MASA_PAJAK
FROM V_CLAIM_INTERNAL A

这是工作。。非常感谢你。。也感谢您的解释: