日期:2014-05-17  浏览次数:20526 次

sql查询纠结了
一 客户(kh) 表,
列:id,姓名
1,张三
2,李四
3,王五
二, 进场(jc) 表,
列:客户id, 进场时间, 离场时间 , 状态(进场,离场)
  2,2012-07-14 10:10:00,2012-07-14 12:10:00, 离场
  1,2012-07-14 04:10:00,2012-07-14 10:10:00, 离场
  3,2012-07-14 15:10:00,2012-07-14 21:10:00, 离场
三, 交易 (jy) 表,
列:id,客户id, 交易时间, 交易数量,交易金额
  1, 1, 2012-07-14 10:30:00, 10, 100
  2, 1, 2012-07-14 10:10:00, 15, 50
  3, 2, 2012-07-14 10:10:00, 20, 20
  4, 1, 2012-07-14 10:10:00, 15, 40
  5, 2, 2012-07-14 10:10:00, 41, 48
进场时间如2012-07-14 08:00:00 离场时间如:2012-07-14 20:00:00
进场以后可以交易,交易次数不限,每次都有交易时间,数量,金额记录,离场后状态标记离场
客户表存放客户id,姓名。
需要统计一个时间段内,这个时间段进场的以下信息:

客户姓名,进场时间, 离场时间, 交易总量,交易总额,状态
张三,2012-07-14 10:10:00, 2012-07-14 12:10:00, 40, 190, 离场
李四,2012-07-14 04:10:00, 2012-07-14 10:10:00, 61, 68, 离场


------解决方案--------------------
挺简单的啊
------解决方案--------------------
select 客户id, 进场时间, 离场时间 , 状态,
(select sum(交易总量),sum(交易总额) 
from
交易 (jy) 表 where 交易表.客户id=客户表.客户id and 交易表 between 进场时间 and 离场时间 )
from 客户表
------解决方案--------------------
一段时间内进场,涉及到这段时间有可能某些客户有多次进场,离场,那么你是要一个客户这段时间内的第一次进场与最后一次离场的时间及最后的状态,还是每次进场的情况。实际情况不同,写法也不相同
------解决方案--------------------
SQL code

--try
select 姓名,进场时间,离场时间,交易总量,sum(交易数量*交易金额) as交易总额,状态
from kh join jc on kh.id=jc.客户id
left join  jy on kh.id=jy.客户id and jy.交易时间 between jc.进场时间 and jc.离场时间
group by 姓名,进场时间,离场时间,交易总量,状态