求大佬解决sql问题
sql吧
全部回复
仅看楼主
level 1
java笑轩 楼主
我的字段是:时间 工号 姓名 部门 消费金额
表名: PosRecord
假设数据是这样的:
时间 工号 姓名 部门 消费金额
2019-01-30001 张三 信息部 12
2019-01-30 001 张三 信息部 13
2019-01-30 002 李四 保卫部 16
2019-01-30003 王五 财务部 26
2019-01-29004 赵六 财务部 12
2019-01-30 004 赵六 财务部 12
最后查完要显示成:
工号 姓名 部门 消费金额
001 张三 信息部 20 (同一天同一个人消费超过20按20算)
002 李四 保卫部 16 (不超过20不变)
003 王五 财务部 26
004 赵六 财务部 24 (同一个人不是同一天计算和)
2019年01月30日 09点01分 1
level 1
java笑轩 楼主
时间 工号 姓名 部门 消费金额
2019-01-30 001 张三 信息部 12
2019-01-30 001 张三 信息部 13
2019-01-30 002 李四 保卫部 16
2019-01-30 003 王五 财务部 26
2019-01-29 004 赵六 财务部 12
2019-01-30 004 赵六 财务部 12
2019年01月30日 09点01分 2
level 1
003 王五 财务部 26 金额不是大于26吗,不应该显示20吗
2019年01月31日 10点01分 4
我也看了半天,楼主的意思是,同一天的才20,不是同一天的sum
2019年02月08日 23点02分
level 12
select 工号,姓名,部门,
case when sum(消费金额)>20 then 20 else sum(消费金额) end
from ProsRecord
group by
时间,工号,姓名,部门
这只查了相同时间内的消费情况,
把上面的结果集当新的表再group by
就可以得到你要的结果
有个疑问,同一个人,连续两天都消费了,当天消费金额大于20,第二天消费也大于20怎么统计??
就你这个例子来说001号张三 一月29号也消费了呢?
2019年02月09日 00点02分 5
1