Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.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 Where子句发出的情况_Sql_Case_Where - Fatal编程技术网

Sql Where子句发出的情况

Sql Where子句发出的情况,sql,case,where,Sql,Case,Where,我试图编写一个WHERE子句,它为一个实例捕获一组参数,为另一个实例捕获另一组参数 现在我写了这样的东西: Where s.ProjectID=110 and wfseg.SiteEventGroupID=3 and wfse.EventStatusID in (1,2) CASE WHEN cf.PaperDocumentTypeID <> 1 THEN CAST(cf.DateUploaded as DATE) = '09/25

我试图编写一个WHERE子句,它为一个实例捕获一组参数,为另一个实例捕获另一组参数

现在我写了这样的东西:

Where 
    s.ProjectID=110 
    and wfseg.SiteEventGroupID=3 
    and wfse.EventStatusID in (1,2)
    CASE WHEN cf.PaperDocumentTypeID <> 1 
      THEN CAST(cf.DateUploaded as DATE) = '09/25/2014'  
      ELSE CAST(cf.DateUploaded as DATE) = '09/25/2014' AND CAST(cr.CheckDate as DATE) ='09/25/2014'  
    END
如果PaperDocumentType不是1,那么它应该显示参数CASTcf.dateUpload as DATE='09/25/2014'如果文档是1,那么它应该显示以下两个参数CASTcf.dateUpload as DATE='09/25/2014'和CASTcr.CheckDate='09/25/2014'

因此,在运行之前,我会遇到一些错误-不确定应该如何重写以使其正常运行

是在什么时候,不是在什么地方。

是在什么时候,不是在什么地方。

试试看

Where 
    s.ProjectID = 110  and 
    wfseg.SiteEventGroupID = 3 and 
    wfse.EventStatusID in (1,2) and

   CAST(cf.DateUploaded as DATE) = @parameter and
   CAST(cr.CheckDate as DATE) = (case when whencf.PaperDocumentTypeID <> 1  then @parameter else CAST(cr.CheckDate as DATE)END)
试试看

Where 
    s.ProjectID = 110  and 
    wfseg.SiteEventGroupID = 3 and 
    wfse.EventStatusID in (1,2) and

   CAST(cf.DateUploaded as DATE) = @parameter and
   CAST(cr.CheckDate as DATE) = (case when whencf.PaperDocumentTypeID <> 1  then @parameter else CAST(cr.CheckDate as DATE)END)

首先,它将以时间为基础,而不是以地点为基础。此外,当对从完整日期时间转换为日期的日期执行查询时,将阻止优化任何具有日期字段的此类索引

为了简化case-when子句,由于cast无论如何都是相同的日期,所以可以将其缩短为

 s.ProjectID=110 
    and wfseg.SiteEventGroupID=3 
    and wfse.EventStatusID in (1,2)
    and CAST(cf.DateUploaded as DATE) = '09/25/2014'
    and (    cf.PaperDocumentTypeID = 1 
        OR ( cf.PaperDocumentTypeID <> 1  and CAST(cr.CheckDate as DATE) ='09/25/2014' ))
因为你没有做演员,你可以

    and cf.DateUploaded >= '2014-09-25' and cf.DateUploaded < '2014-09-26'

这样,从9月25日到晚上11:59:59的所有时间都有了。稍长一点,但如果日期是索引的一部分则更好。

首先,它将以时间为基础,而不是以地点为基础。此外,当对从完整日期时间转换为日期的日期执行查询时,将阻止优化任何具有日期字段的此类索引

为了简化case-when子句,由于cast无论如何都是相同的日期,所以可以将其缩短为

 s.ProjectID=110 
    and wfseg.SiteEventGroupID=3 
    and wfse.EventStatusID in (1,2)
    and CAST(cf.DateUploaded as DATE) = '09/25/2014'
    and (    cf.PaperDocumentTypeID = 1 
        OR ( cf.PaperDocumentTypeID <> 1  and CAST(cr.CheckDate as DATE) ='09/25/2014' ))
因为你没有做演员,你可以

    and cf.DateUploaded >= '2014-09-25' and cf.DateUploaded < '2014-09-26'

这样,从9月25日到晚上11:59:59的所有时间都有了。稍长一点,但如果日期是索引的一部分则更好。

大小写的格式没有“WHERE”这个词

其次,我相信MySQL日期的格式是“YYYY-MM-DD”,但它可能是特定于本地化的,所以我不是100%确定。另外,别忘了另一种生成日期的方法是使用DATE函数。我不确定哪种情况或日期更有效。 例如:

DATE(cf.DateUploaded) = '2014-09-25'

案例的格式没有“WHERE”一词

其次,我相信MySQL日期的格式是“YYYY-MM-DD”,但它可能是特定于本地化的,所以我不是100%确定。另外,别忘了另一种生成日期的方法是使用DATE函数。我不确定哪种情况或日期更有效。 例如:

DATE(cf.DateUploaded) = '2014-09-25'

不确定参数将包含哪些内容?将参数替换为所需的日期,如您给出的示例,或者在查询之前声明@parameter DATETIME='2014-09-25'。不确定参数将包含哪些内容?将参数替换为所需的日期,如您给出的示例,或者在查询之前声明@parameter DATETIME='2014-09-25'-编辑原始的是什么时候,但实际的查询没有我编辑它简洁与我的问题有什么时候。此外,我使用的是T-SQL而不是MySQL,但它与您给出的非常相似,所以我会尝试一下,但日期不应该是IssueEYP-将原始数据编辑为WHEN,但实际查询没有我编辑它,以便简洁地说明我的问题,它具有WHEN。此外,我使用的是T-SQL而不是MySQL,但它与您提供的非常相似,所以我会尝试一下,但日期不应该是一个问题