2017-01-20 9 views
0

私はMySQLでこのクエリに問題があります。ケースの場合と比較する場合

このバージョンしようとした場合:

mysql> SELECT 
    COUNT(*), 
    myCode, 
    myState 
FROM 
    `tbl_2016` 
WHERE 
    `myCode` LIKE '%XI10-2-020012%' 
GROUP BY 
    `myState`; 

を出力は次のとおりです。

+----------+---------------+--------------------------------+ 
| COUNT(*) | myCode  | myState      | 
+----------+---------------+--------------------------------+ 
|  5 | XI10-2-020012 | NULL       | 
|  4 | XI10-2-020012 | ACTIVE       | 
|  1 | XI10-2-020012 | NOT ACTIVE      | 
+----------+---------------+--------------------------------+ 
2 rows in set 

しかし構文WHEN CASEで、この他versioneをしようとした場合:

mysql> SELECT 
    myCode, 
    COUNT(
     CASE 
     WHEN myState IN (
      'Active' 
     ) THEN 
      1 
     ELSE 
      0 
     END 
    ) AS `Active`, 
    COUNT(
     CASE 
     WHEN myState IN (
      'Not Active' 
     ) THEN 
      1 
     ELSE 
      0 
     END 
    ) AS `Not Active` 
FROM 
    `tbl_2016` 
WHERE 
     `myCode` LIKE '%XI10-2-020012%' 
GROUP BY 
    `myState`; 

が出力されます最初のバージョンと異なる:

+---------------+--------+------------+ 
| myCode  | Active | Not Active | 
+---------------+--------+------------+ 
| XI10-2-020012 |  4 |   4 | 
+---------------+--------+------------+ 
1 row in set 

これを解決するにはどうすればよいですか?

私を助けることができますか?

ありがとうございます、私のコードは以下のとおりです。

答えて

1

2番目のバージョンではCOUNTの代わりにSUMを使用します。

関連する問題