比较行并计算同一行的列

Compare rows and calculate column of same row

如果你看到 2 个 Abc,那么计算总数,比如 9*2 = 18 第二行是 15*2 = 30 这样

add Fun1    Fun2    Fun3
9   Abc     Wxy     Abc
15  def     Abc     Abc

一系列 case 表达式应该可以解决问题:

SELECT add * ((CASE Fun1 WHEN 'Abc' THEN 1 ELSE 0 END) + 
              (CASE Fun2 WHEN 'Abc' THEN 1 ELSE 0 END) + 
              (CASE Fun3 WHEN 'Abc' THEN 1 ELSE 0 END)) AS total
FROM   mytable

使用 addn 而不是 add 因为 add 是 SQL

中的保留字
SELECT addn, Fun1, Fun2, Fun3, ((CASE Fun1 WHEN 'Abc' THEN 1 ELSE 0 END) + 
                                (CASE Fun2 WHEN 'Abc' THEN 1 ELSE 0 END) + 
                                (CASE Fun3 WHEN 'Abc' THEN 1 ELSE 0 END)) * addn AS result
FROM yourtable

输出:

addn    Fun1    Fun2    Fun3    result
9       Abc     Wxy     Abc     18
15      def     Abc     Abc     30

SQL Fiddle: http://sqlfiddle.com/#!6/ec218/3/0