当前位置: 首页 > 面试题库 >

MySQL使用Sum和Case

仰雅昶
2023-03-14
问题内容

我正在尝试使用连接到MySQL数据库的ASP.NET创建GridView。数据如下所示。

BusinessUnit    OrderDate      Canceled
UnitA           1/15/2013          N
UnitA           10/1/2013          N
UnitB           10/15/2013         N
UnitB           10/22/2013         N
UnitB           10/22/2013         N

根据上面的记录,我希望结果显示如下

BusinessUnit  TodaysOrders   ThisMonthsOrders  ThisYearsOrders
UnitA              0                1                2
UnitB              2                3                3

我当前的代码如下。这给了我错误(关于DatabaseName.sum的内容不存在。请检查“函数名称解析和解析”部分…)

Select  
    SUM (CASE WHEN (OrderDate)=DATE(NOW()) THEN 1 ELSE 0 END) AS TodaysOrders,
    SUM (CASE WHEN YEAR(OrderDate) = YEAR(CURDATE()) AND MONTH(OrderDate) = MONTH(CURDATE()) THEN 1 ELSE 0 END) AS ThisMonthsOrders,
    SUM (CASE WHEN YEAR(main_order_managers.creation_date) = YEAR(CURDATE()) THEN 1 ELSE 0 END) AS ThisYearsOrders

代码继续

FROM OrderTable WHERE OrderTable.Canceled. <> 'Y';

Sum Case最好在这里使用吗?


问题答案:

该错误是由函数名称和括号之间的空格引起的

SUM (CASE WHEN ...
   ^^

阅读更多函数名称解析和解析

尝试

SELECT BusinessUnit,
       SUM(CASE WHEN OrderDate = CURDATE() THEN 1 ELSE 0 END) TodaysOrders,
       SUM(CASE WHEN DATE_FORMAT(OrderDate, '%Y%m') = DATE_FORMAT(CURDATE(), '%Y%m') THEN 1 ELSE 0 END) ThisMonthsOrders,
       SUM(CASE WHEN YEAR(OrderDate) = YEAR(CURDATE()) THEN 1 ELSE 0 END) ThisYearsOrders
  FROM OrderTable
 WHERE Canceled <> 'Y'
 GROUP BY BusinessUnit

这是 SQLFiddle 演示



 类似资料:
  • 问题内容: 我的桌子: 我需要使用,按ID分组来更新字段: 对于ID 1,应为 对于ID 2,应为 预期输出: 我该如何看重? 我的代码: 这是行不通的。 问题答案: 不幸的是,您无法在中更新与其自身联接的表。 您需要创建一个函数作为解决方法:

  • 问题内容: 假设我有这张桌子 我想返回第一行,其中所有先前现金的总和大于某个值: 因此,例如,如果我要返回第一行,其中所有先前现金的总和都大于500,则应返回到第3行 如何使用mysql语句执行此操作? 使用 不起作用 问题答案: 您只能在HAVING子句中使用聚合进行比较: 该子句要求您定义GROUP BY子句。 要获得第一行,其中所有先前现金的总和都大于某个值,请使用: 由于聚合函数发生在子查

  • 问题内容: 我在一个表中有类别 表 (cat_name,amount); 如何获得每个分组的总和 问题答案:

  • 问题内容: 是否可以在另一个MySql SUM()函数中使用MySql SUM()函数? 像下面 谢谢 问题答案: 您只需要一个: 或在每个字段上使用:

  • 我有一张学生记分卡表。这是表格, 现在,我需要对每个学生的总分求和。我通过使用< code>sum(mark1 mark2...markn)按stud分组。我想知道如何在不添加每个列名的情况下对其求和,如果达到marks26,这将是巨大的。有人知道如何修理它吗?提前感谢。

  • 问题内容: 我在SQL查询中使用sum()寻找帮助: 我使用它是因为我正在执行“分组依据”,这可以确保同一行不会被重复计数。 问题是SUM(conversions.value)对每行的“值”计数超过一次(由于分组依据) 我基本上想为每个DISTINCT conversions.id 做。 那可能吗? 问题答案: 我可能是错的,但据我了解 conversions.id* 是表 转换 的 主键 * s