比较行并计算同一行的列
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
如果你看到 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