我正在尝试使用连接到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