日期:2014-05-19  浏览次数:20614 次

求一个单条记录有最高限额的统计语句
表的结构很简单
C_name,C_no,C_amnt,分别为姓名、流水号、金额
内容例如:
A,1,120.00
A,2,150.00
A,3,400,00
A,4,240.00
B,5,730.00
B.6.280.00
C,7,30.00

要求是这样的,每条记录C_amnt> =300的,按300计,然后group   by   C_name,得到它的sum(C_amnt)和重记后的sum(C_amnt)

这个主要是用在抽奖上面,每100元有一次抽奖的机会,每件商品最高限三次机会,余额可以累计为一次机会,如上面的数据:应该输出为:
A,910.00,8         ---8=int((120+150+300+240)/100)
B,1010.00,5       ---5=int((300+280)/100)
C,30.00,0           ---0=int(30/100)

想了好长时间,就是算不出来应该怎么写条件,因为原来的表是正式服务器上的数据,我没办法在上面加一个字段再update出每条的最高值,建一个临时表可行吗?因为那张表的数据有近300万条(从开业以来的所有流水)。如果可以用语句搞定是最好的了,呵呵。

先谢谢各位了。

------解决方案--------------------
select C_name, C_amnt=sum(C_amnt), 次数=cast(sum(case when C_amnt> =300 then 300.00 else C_amnt end/100) as int) from T group by C_name