【问题标题】:Select statement with multiple conditions具有多个条件的选择语句
【发布时间】:2014-01-09 14:07:37
【问题描述】:

我尝试创建选择查询,但仍在苦苦挣扎。我的目标是从列 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(AMOUNT) = 105 所以超过 100

选择我在下面创建的查询只需要添加:sum(amount) of values where each one is less than 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;

【问题讨论】:

    标签: sql


    【解决方案1】:
     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
    

    【讨论】:

    • 维托雷,感谢您的帮助。不幸的是,您的选择并没有完全按照它应该做的那样做。我需要先检查是否有任何值大于 50,如果是,我需要汇总所有小于 50 的值,最后我检查小于 50 的值的总数是否小于 100。你喜欢吗有可能吗?
    • 这正是我需要的,非常感谢你的帮助,圣诞快乐:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-20
    • 2016-02-20
    • 1970-01-01
    • 1970-01-01
    • 2014-08-09
    相关资源
    最近更新 更多