Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

My query:

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

I want something like:

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

This gives an error. I can not use GROUP BY. If I add DISTINCT before CASE it does not work either it treats FieldValue column as DISTINCT but I want it to count ColumnID as distinct.

Please help

like image 766
GGio Avatar asked May 20 '14 18:05

GGio


1 Answers

Try this

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

  ) AS mtd
like image 198
echo_Me Avatar answered Nov 15 '22 20:11

echo_Me