已有充值表,如何按充值次数进行拆分统计。举例如下:
充值表(CZ):
卡号(cardno) 充值次数(times) 充值日期(loddate) 充值金额(lodamt)
91034567 1 2010-2-12 100
91034567 2 2010-5-21 100
91034567 3 2010-9-16 200
91045678 1 2010-3-1 200
91045678 2 2010-3-23 300
91056789 1 2010-2-19 300
想得到如下结果:
table1:(充值次数为三次的记录)
卡号(cardno) 充值次数(times) 充值日期(loddate) 充值金额(lodamt)
91034567 1 2010-2-12 100
91034567 2 2010-5-21 100
91034567 3 2010-9-16 200
。
table2:(充值次数为两次的记录)
卡号(cardno) 充值次数(times) 充值日期(loddate) 充值金额(lodamt)
91045678 1 2010-3-1 200
91045678 2 2010-3-23 300
table3:(充值次数和金额的统计,按卡号和次数排列)
卡号(cardno) 充值次数(times) 充值金额(lodamtall)
91034567 3 400
91045678 2 500
91056789 1 300
请各位大侠指教啊
充值表(CZ):
卡号(cardno) 充值次数(times) 充值日期(loddate) 充值金额(lodamt)
91034567 1 2010-2-12 100
91034567 2 2010-5-21 100
91034567 3 2010-9-16 200
91045678 1 2010-3-1 200
91045678 2 2010-3-23 300
91056789 1 2010-2-19 300
想得到如下结果:
table1:(充值次数为三次的记录)
卡号(cardno) 充值次数(times) 充值日期(loddate) 充值金额(lodamt)
91034567 1 2010-2-12 100
91034567 2 2010-5-21 100
91034567 3 2010-9-16 200
。
table2:(充值次数为两次的记录)
卡号(cardno) 充值次数(times) 充值日期(loddate) 充值金额(lodamt)
91045678 1 2010-3-1 200
91045678 2 2010-3-23 300
table3:(充值次数和金额的统计,按卡号和次数排列)
卡号(cardno) 充值次数(times) 充值金额(lodamtall)
91034567 3 400
91045678 2 500
91056789 1 300
请各位大侠指教啊
解决方案 »
- oracle client 怎么配置
- oracle 10g oracleservice总是自动停止
- 请给为老手指点一下!!!
- 服务器上Oracle连接总是不成功,急求解
- FreeBSd amd64下多次安装oracle client均告失败,amd64下,能安装oci?
- 怎样在ORACLE的存储过程中定义一CURSOR类型的输出参数,在客户端怎样调用?
- 安装多个CLIENT的问题
- 为什么这个where条件能成立?(where ' 123 '=123)
- 这样的SQL如何写?
- 位图索引和B树索引在性能上有什么区别啊?
- show parameter spfile
- 万分火急!oracle表varchar类型怎么自增
SELECT * FROM CZ WHERE CARDNO IN (SELECT CARDNO FROM CZ GROUP BY CARDNO HAVING COUNT(*) =3)2.充值次数为二次的记录
SELECT * FROM CZ WHERE CARDNO IN (SELECT CARDNO FROM CZ GROUP BY CARDNO HAVING COUNT(*) =2)3.充值次数和金额的统计
SELECT cardno,count(*) ,sum(lodamtall) FROM CZ group by cardno,sum(lodamtall)
SELECT *
FROM cz a
WHERE 3 = (SELECT COUNT(*) FROM cz b WHERE b.cardno = a.cardno);--方法2(充值次为3)
SELECT cardno, times, loddate, lodamt
FROM (SELECT cz.*, COUNT(*) over(PARTITION BY cardno) cnt FROM cz)
WHERE cnt = 3;--总数
SELECT cardno,count(*) times ,sum(lodamtall) FROM cz group by cardno;