2017-07-01 37 views
4

我已经编写了一个个人伪代码来帮助其他人了解我想实现的目标。我是SQL初学者,但我知道所有的基础知识,只是没有足够的可能性经验。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') 
; 

这里是我的伪代码(我发现后接受的答案,我在伪逻辑是不正确的了。这已经被固定)

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 
+2

采样数据比伪代码更好。使用您正在使用的数据库进行标记。 –

回答

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; 
+1

非常感谢,几乎完美的答案。选择总和(当a> = b然后b另一个结束时)总计为 from t;我只需要在SQL中交换逻辑即可得到我想要的答案。我会在接受我的问题时将其视为已接受的答案。再次感谢您分享您在这个问题上的专业知识和经验。我花了6个小时来处理我的工作。 w3school和虚拟SQL服务器,我正在阅读大量的SQL语句在互联网上,并不适用于我。 – user8242530