我写了一个个人伪代码来帮助别人理解我想要实现的目标。我是SQL的初学者,但我知道所有的基础知识,只是对可能性没有足够的经验。
我尝试使用SELECT CASE,但它无法满足我的需求。
这是我的示例数据
CREATE TABLE Records
([ColA] INTEGER, [ColB] INTEGER, [ColTotal] INTEGER)
;
INSERT INTO Records
([ColA], [ColB] )
VALUES
('3', '4'),
('4', '2’),
('1', '2'),
('3', '5'),
('3', '1'),
('2', '2')
;
这是我的PSEUDOCODE(我在接受回答之后发现我的psuedo中的逻辑也是错误的。这已经修复了)
SELECT COL A, COL B, COL TOTAL
IF COL A >= COLB THEN
ADD COLB value to COL TOTAL
ELSE
USE Value from COLA and add to total
END IF
这是我的SQL
SELECT SUM(ColTotal)
FROM t
WHERE ColA >= ColB
答案 0 :(得分:3)
这是你想要的吗?
select sum(case when a < b then a else b end) as total
from t;
许多数据库都支持least()
函数,这使得这个更简单:
select sum(least(a, b)) as total
from t;