2

我有一个表,其中有一列具有三个值 a、b 和 c。表的当前快照是

表名:- 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 回答