MySQL COUNT(CASE WHEN ...那么DISTINCT列)

GGi*_*Gio 6 mysql sql case count distinct

我的查询:

COUNT(
    CASE WHEN YEAR(FieldValue) = YEAR(CURDATE()) 
    AND MONTH(FieldValue) = MONTH(CURDATE())
    THEN 1
    END
) AS mtd
Run Code Online (Sandbox Code Playgroud)

我想要的东西:

COUNT(
    CASE WHEN YEAR(FieldValue) = YEAR(CURDATE()) 
    AND MONTH(FieldValue) = MONTH(CURDATE())
    THEN DISTINCT ColumnID
    END
) AS mtd
Run Code Online (Sandbox Code Playgroud)

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

请帮忙

ech*_*_Me 21

试试这个

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

  ) AS mtd
Run Code Online (Sandbox Code Playgroud)