MySQL COUNT(CASE WHEN ... THEN DISTINCT 列)

标签 mysql sql count case distinct

我的查询:

COUNT(
    CASE WHEN YEAR(FieldValue) = YEAR(CURDATE()) 
    AND MONTH(FieldValue) = MONTH(CURDATE())
    THEN 1
    END
) AS mtd

我想要这样的东西:

COUNT(
    CASE WHEN YEAR(FieldValue) = YEAR(CURDATE()) 
    AND MONTH(FieldValue) = MONTH(CURDATE())
    THEN DISTINCT ColumnID
    END
) AS mtd

这给出了一个错误。我不能使用 GROUP BY。如果我在 CASE 之前添加 DISTINCT 它不起作用,或者它将 FieldValue 列视为 DISTINCT 但我希望它将 ColumnID 计为不同。

请帮忙

最佳答案

试试这个

  COUNT(DISTINCT(
    CASE WHEN YEAR(FieldValue) = YEAR(CURDATE()) 
    AND MONTH(FieldValue) = MONTH(CURDATE())
    THEN ColumnID 
    END )

  ) AS mtd

关于MySQL COUNT(CASE WHEN ... THEN DISTINCT 列),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23766902/

相关文章:

php - 如何显示选择框中的选项?

python - 如何在 python 中增加查询值?

java - 比较同一时区的java Date与sql TIMESTAMP

r - 计算数据框中值的唯一组合和汇总值

php - 序列化mysql表中的数据

mysql - 如何编写存储在 MySQL 中的过程以导出带有 'dynamic path' 的表?

MySQL显示重复行

c# - SQL Server 数据库连接问题

sql - Codeigniter 事件记录所在数组

mysql - 使用 MySQL 中的附加列过滤器从 Information Schema 获取行数