2013-12-20 186 views
1

我尝试创建选择查询,但仍然挣扎。我的目标是收到总金额AMOUNT的总金额,但是对于每一行COLUMN_ID,必须至少有一个值小于50并且至少有一个值大于50.总金额必须通过汇总值来计算,其中每一行小于50,和该总量必须少于100选择多个条件的语句

  1. 设说,我具有值(90,20,40) - 的结果应该是SUM(AMOUNT)= 60
  2. 设说,我具有值(52 ,70,20,40) - 结果应该是SUM(AMOUNT)= 60
  3. 假设我有值(32,7) - 没有结果,因为没有超过50的值
  4. 假设我有值(60,150) - 没有结果是没有价值小于50
  5. 设说,我具有值(75,20,40,45) - 无结果作为有SUM(数量)= 105,从而超过100

选择查询我已创建下面只需要添加:值的总和(金额),其中每一个都是小于50

SELECT COLUMN_ID, SUM(AMOUNT) 
    FROM TABLE1 
    WHERE ... 
    GROUP BY COLUMN_ID 
    HAVING MIN(AMOUNT) < 50 AND MAX(AMOUNT) > 50 AND SUM(AMOUNT) < 100; 

回答

0
SELECT COLUMN_ID 
     , SUM(case when ammount < 50 then ammount else 0 end) sumsmall 
FROM T 
WHERE ... 
GROUP BY COLUMN_ID 
HAVING SUM(case when ammount < 50 then ammount else 0 end) > 0 
    and SUM(case when ammount > 50 then ammount else 0 end) > 0 
    and SUM(case when ammount < 50 then ammount else 0 end) < 100 
+0

维托雷,感谢你的帮助。不幸的是,你的选择不是完全按照它的设想做的。我需要首先检查是否有任何值大于50的值,如果是这样,我需要将所有小于50的数值归总,最后我检查小于50的值是否小于100。有可能做到吗? – user3033092

+0

@ user3033092更新了我的回答 – vittore

+0

这正是我需要的,非常感谢您的帮助,圣诞快乐:) – user3033092