我有一张UserID和付款金额表 . 我想要汇总所有UserID的付款,然后将它们分组到范围内 . 范围是“小”(总计在1英镑到499英镑之间),“中等”(500英镑 - 4,999英镑)和“大”(5,000英镑)
因此,如果UserID已经进行了4次不同的100英镑付款,那么他将显示为UserID:76867 Range Amount'Flow'
我当前的查询为我提供了每个UserID以及它们的总范围
SELECT
SERIALNUMBER , Case when SUM(BATCHDETAIL.PAYMENTAMOUNT) > 1 and SUM(BATCHDETAIL.PAYMENTAMOUNT) < 500 then 'small' when SUM(BATCHDETAIL.PAYMENTAMOUNT) > 499 and SUM(BATCHDETAIL.PAYMENTAMOUNT) < 5000 then 'medium' when SUM(BATCHDETAIL.PAYMENTAMOUNT) > 5000 and SUM(BATCHDETAIL.PAYMENTAMOUNT) < 10000000 then 'large' END AS 'Sum of PAYMENTAMOUNT'
FROM BATCHDETAIL
WHERE (DATEOFPAYMENT > '2017/07/31') AND (DATEOFPAYMENT < '2018/08/01')
GROUP BY SERIALNUMBER
但我现在需要总结的是每个范围内有多少个userID
Range | Count of UserIDs
-------|----------------
Small | 23
-------|----------------
Medium | 08
(为格式错误道歉) . 任何帮助/问题将永远受到高度赞赏!谢谢李
4 回答
您可以将select语句放入子查询中 . 我假设Serialnumber是UserID,并且您想要计算每个组中的不同用户 .
将您的查询用作子查询,并在“PAYMENTAMOUNT的总和”上再次对其进行分组
您可以使用原始选择定义CTE(公用表表达式),因此您现在可以轻松地将其结果分组以计算每个范围的外观 .
最有效的方法是在两个级别(使用子查询)执行此操作:
顺便说一句,你错过了一些范围 .