有个订单表,字段大概如下Code(订单号,主键),UserName(用户名称),Createtime(订单创建时间),Website(订单来源网站),saletotalPrice(订单金额),PromotionType(折扣类型).
有个查询需求:要求统计每个用户总的下单次数,在A网站的下单次数,第一次下单时间,前一次下单时间,最后一次下单时间,金额总和,折扣类型是1的下单次数.
搞不定了,尤其是在一列当中显示:在A网站的下单次数,前一次下单时间和折扣类型是1的下单次数..
望牛人们给出答案...
有个查询需求:要求统计每个用户总的下单次数,在A网站的下单次数,第一次下单时间,前一次下单时间,最后一次下单时间,金额总和,折扣类型是1的下单次数.
搞不定了,尤其是在一列当中显示:在A网站的下单次数,前一次下单时间和折扣类型是1的下单次数..
望牛人们给出答案...
解决方案 »
- dawugui进!!!
- 求助条件分支(类似C#中的SWICTH...CASE...)
- 联合主键 外键 如何得到如下结果
- 如何将带格式的编辑文本保存到sql server2005数据库中
- sql server 2000客户连接服务器出现无法连接如何解决~!~!~!急呀~!~!~!~!
- 有沒有''在字符串中查找特殊字符的位置'' 這樣的函數謝謝
- 怎么样把一张表生成sql,包括表中的记录
- 关于access数据库中日期型字段的问题?
- 麻烦看一下关于交叉表的存储过程中的一个毛病
- 写sql,怎样每到一天,实现一个表中的数据加入另一表
- master.mdb修复问题
- 重新计算统计数据 选项的 作用?高手来,你懂的。
MIN(Createtime) AS 第一次下单时间,
ISNULL((SELECT MAX(CreateTime) FROM 订单表
WHERE 用户名称=A.用户名称
AND CreateTime<(SELECT MAX(CreateTime) FROM 订单表
WHERE 用户名称=A.用户名称)),MIN(CreateTime)) AS 上一次下单时间,
MAX(CreateTime) AS 最后一次下单时间,
SUM(订单金额) AS 金额总和,
SUM(CASE WHEN 折扣类型=1 THEN 1 ELSE 0 END) AS 折扣类型是1的下单次数
FROM 订单表 AS A
GROUP BY 用户名称
select username,count(*) as sumCnt,min(createtime) as minDate,max(createtime) as maxDate,
(select max(createtime) from tb where username = t.username and createtime < t.createtime) as homDate,
sum(case when promotiontype = 1 then 1 else 0 end) as type_1Cnt
from tb t
group by username
select username,count(*) as sumCnt,min(createtime) as minDate,max(createtime) as maxDate,
(select max(createtime) from tb where username = t.username and createtime < t.createtime) as homDate,
sum(case when promotiontype = 1 then 1 else 0 end) as type_1Cnt
from tb t
where Website = 'A网站'
group by username
(select max(createtime) from tb where username = t.username and createtime < t.createtime
) as AS 上一次下单时间,
sum(case when promotiontype = 1 then 1 else 0 end) as 折扣类型是1的下单次数
from tb t
where Website = 'A网站'
group by username