当前位置: 代码迷 >> Sql Server >> SQL查询有关问题(多分组查询)
  详细解决方案

SQL查询有关问题(多分组查询)

热度:95   发布时间:2016-04-24 09:57:13.0
SQL查询问题(多分组查询)
我有一表VIPinfo(cardID,shopNo,remark,operDate)对应表项为会员信息表(会员卡号,店铺号,标记,操作时间)。其中“标记”包含的种类有“充值、消费、补卡”等,operDate的格式为‘2014-08-01 14:21:00'。我想以店铺分类求取每个店铺每日的会员注册人数。已有语句如下:
select minoperdate as 日期,count(cardID)as 注册数
from
(
select cardId,convert(varchar(100),min(operDate),23)as minoperdate 
 from YCSY.dbo.pos_mbCardFlow 
where remark like '%台充值'
 group by cardId
)a
group by minoperdate

得出结果如下图:

------解决思路----------------------

select shopNo,minoperdate as 日期,count(cardID)as 注册数
from
(
select shopNo,cardId,convert(varchar(100),min(operDate),23)as minoperdate 
 from YCSY.dbo.pos_mbCardFlow 
where remark like '%台充值'
 group by shopNo,cardId
)a
group by shopNo, minoperdate


我的打酱油的。。。
------解决思路----------------------

 
 with cte as 
 (select cardid,MIN(operdate)  as mindate from #VIPinfo
 where remark like'%台充值'
 group by cardid)
 select shopno,COUNT(a.cardid) as counts from #vipinfo as a 
 join cte as b  on a.cardid=b.cardid and a.operdate=b.mindate
 group by shopno

--结果
shopno                                             counts
-------------------------------------------------- -----------
8880001                                            3

(1 行受影响)

  相关解决方案