求大虾帮忙

「已注销」 2013-09-08 02:32:46
大家好,以下是表结构:
会议ID,酒店ID,会议日期
1 1 2013-8-1
2 1 2013-8-2
3 1 2013-8-3
4 2 2013-8-2
5 2 2013-8-3
6 1 2013-8-5
要得到以下统计结果:
酒店ID 会议数:
1 2
2 1
也就是说:同一酒店会议日期为连续的只计算一次。
用sql如何实现
谢谢了
...全文
80 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
唐诗三百首 2013-09-08
  • 打赏
  • 举报
回复

create table u01
(会议ID int, 酒店ID int, 会议日期 varchar(15))

insert into u01
 select 1, 1, '2013-8-1' union all
 select 2, 1, '2013-8-2' union all
 select 3, 1, '2013-8-3' union all
 select 4, 2, '2013-8-2' union all
 select 5, 2, '2013-8-3' union all
 select 6, 1, '2013-8-5'
 

select t.酒店ID,count(distinct t.d) '会议数'
from
(select 酒店ID,datename(d,会议日期)
              -row_number() over(partition by 酒店ID order by cast(会议日期 as date)) 'd'
 from u01) t
group by t.酒店ID
 
/*
酒店ID        会议数
----------- -----------
1           2
2           1

(2 row(s) affected)
*/

22,206

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧