2

a、b、cの3つの値を持つ1つの列を持つ1つのテーブルがあります。テーブルの現在のスナップショットは

テーブル名:- tblTest

tblColumn
a
a
a
b
b
b
b
c
c

出力を正確に取得する必要があります

A B C
3 4 2
4

3 に答える 3

4
select sum(tblColumn = 'a') as A,
    sum(tblColumn = 'b') as B,
    sum(tblColumn = 'b') as C
from tblTest

SQL フィドルの例

于 2012-10-13T07:15:14.807 に答える
3
SELECT  SUM(CASE WHEN colName = 'a' THEN 1 ELSE 0 END) as A,
        SUM(CASE WHEN colName = 'b' THEN 1 ELSE 0 END) as B,
        SUM(CASE WHEN colName = 'c' THEN 1 ELSE 0 END) as C
FROM tableName

別の手法は を使用するPreparedStatementことです。これは、複数の不明な数値グループの値がある場合に非常に適しています。たとえば、a,b,c,d,e,f,g,h,...

SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'SUM(IF(tblColumn = ''',
      tblColumn,
      ''', 1, 0)) AS ',
      tblColumn 
    )
  ) INTO @sql
FROM
  Table1;
SET @sql = CONCAT('SELECT ', @sql, ' FROM Table1');

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

SQLFiddle デモ

于 2012-10-13T07:08:47.207 に答える
2

これを試して

select tblColumn, Count(*) from tblTest group by tblColumn
于 2012-10-13T07:16:00.203 に答える