SQL有条件地选择不同的聚合

时间:2012-07-12 05:24:20

标签: sql sqlite

我们说我有一个表T,它有一个属性A,一个整数。

如果MAX(T) + 1包含5,T如果不包含MAX(T) + 2,如何让SQL查询返回{{1}}

3 个答案:

答案 0 :(得分:2)

SELECT MAX(a) + CASE WHEN (5 IN (SELECT a FROM t)) THEN 1 ELSE 2 END AS max_plus_something FROM t

答案 1 :(得分:1)

SELECT MAX(A) + MIN(CASE A WHEN 5 THEN 1 ELSE 2 END) AS NewA FROM T

答案 2 :(得分:0)

我没有机会测试很多情况,但我认为这可以做你想要的。

declare @MinPosNI int;
set @MinPosNI = 1;
select @MinPosNI = case when (A - @MinPosNI) > 0 then @MinPosNI else A + 1 end from T     where A > 0 order by A 
select @MinPosNI