如何获取特定行的列值的计数?

时间:2013-07-03 05:20:21

标签: mysql sql oracle

我有一张桌子。

enter image description here

如何获取特定行中值为“M”的列值的计数?

例如:如果我给出条件,其中shape_name ='Rectangle',它将返回值为''M'的列的计数。结果:计数为2

如果真L-Left =>结果:计数为4 如何得到答案。?请帮助我修复它。

3 个答案:

答案 0 :(得分:4)

CASE WHEN的解决方案是这样的:

SELECT shape_name,
      CASE WHEN a = 'm' THEN 1 ELSE 0 END +
      CASE WHEN b = 'm' THEN 1 ELSE 0 END +
      CASE WHEN c = 'm' THEN 1 ELSE 0 END as mcount
  FROM t1

SQLFiddle

只需将SQL调整为表结构 - 您需要为每列找到更多CASE WHEN语句

答案 1 :(得分:0)

很老的解决方案 - 获取所有列,遍历所有列,并计算M的出现次数。

答案 2 :(得分:0)

  select SHAPE_NAME ,
            DECODE(COLUMN_NAME1,'M',1,0)+
            DECODE(COLUMN_NAME2,'M',1,0)+
            DECODE(COLUMN_NAME3,'M',1,0)+
            DECODE(COLUMN_NAME4,'M',1,0) your_count
 from  YOUR_TABLE where shape_name='Rectangle' ;