【问题标题】:Select wont work [closed]选择不起作用[关闭]
【发布时间】:2013-06-18 10:49:33
【问题描述】:

这个查询到底有什么问题?

SELECT id,
       SUM(CASE myDate
             WHEN DATEDIFF(day, myDate, GETDATE()) = 0 THEN [Items]
             ELSE 0
           END)
FROM   myTable
GROUP  BY id 

???

错误提示

"Incorrect syntax near '='.

【问题讨论】:

  • CASE myDate 应该只是 CASE
  • 您混淆了简单案例表达式和搜索案例表达式之间的语法 - 它们是两种不同的野兽。

标签: sql syntax syntax-error


【解决方案1】:

这是你想要的查询:

SELECT id,
       SUM(CASE WHEN DATEDIFF(day, myDate, GETDATE()) = 0 THEN [Items] ELSE 0 END)
FROM myTable
GROUP BY id;

case 之后的 myDate 对您没有任何帮助。 case 语句的替代形式在语法上是允许的:

sum(case mydate when '2013-01-01' then 'New Years Day' . . .

但当您在when 之后有一个表达式时则不然。

【讨论】:

    【解决方案2】:

    SUM(CASE myDate WHEN DATEDIFF(day, myDate, GETDATE()) )我猜你错过了一个封闭的括号

    【讨论】:

      【解决方案3】:

      CASE 之后不需要mydate

      SELECT  id, 
              SUM(CASE 
                  WHEN DATEDIFF(day, myDate, GETDATE()) = 0 
                  THEN [Items] ELSE 0 END) 
      
      FROM myTable GROUP BY id;
      

      【讨论】:

        【解决方案4】:

        选择 ID, 总和(案例我的日期 WHEN DATEDIFF(day, myDate, GETDATE() = 0) THEN [Items] 否则 0 结尾) 从我的表 按 ID 分组

        这是正确的

        【讨论】:

          猜你喜欢
          • 2023-04-08
          • 2013-06-19
          • 1970-01-01
          • 2013-10-27
          • 1970-01-01
          • 2022-01-25
          • 1970-01-01
          • 2015-12-29
          • 2013-03-21
          相关资源
          最近更新 更多