首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

各位大侠,求一条巨难的sql解决方案

2012-01-26 
各位大侠,求一条巨难的sql有一张表,有地区、用户名、注册时间。给定一个起始时间、一个终止时间,求给定起止时

各位大侠,求一条巨难的sql
有一张表,有地区、用户名、注册时间。给定一个起始时间、一个终止时间,求给定起止时间内的期间记录数,以及到终止时间的记录数。用一条sql实现。比如说给定时间2008-1-10和2008-3-9,首个注册用户的注册时间为2007-8-19.既求2008-1-10和2008-3-9间的记录数以及2007-8-19和2008-3-9的记录数。谢谢!

[解决办法]

SQL code
select 注册时间,count(1)from twhere 注册时间 btween @s and @egroup by 注册时间
[解决办法]
between
[解决办法]
给点数据 及你想要的结果
[解决办法]
有一张表,有地区、用户名、注册时间。给定一个起始时间、一个终止时间,求给定起止时间内的期间记录数,以及到终止时间的记录数。用一条sql实现。比如说给定时间2008-1-10和2008-3-9,首个注册用户的注册时间为2007-8-19.既求2008-1-10和2008-3-9间的记录数以及2007-8-19和2008-3-9的记录数。谢谢!

---

还真没看懂?

不如直接求2007-08-19到2008-03-09


[解决办法]
SQL code
select count(distinct(用户名)) as '记录数' from tbwhere dt between '开始时间' and '结束时间'group by 用户名
[解决办法]
SQL code
declare @dt1 as datetimedeclare @dt2 as datetimeset @dt1 = '2008-1-10'set @dt2 = '2008-3-9'declare @first as datetimeselect @first top 1 注册时间 from tb order by 注册时间 select count(*) from tb where 注册时间 between @dt1 and @dt2select count(*) from tb where 注册时间 between @first and @dt2
[解决办法]
现在流行让猜.

比如刚才那个题为"如何找出两个不级格的"
[解决办法]
呵呵
[解决办法]
探讨
现在流行让猜.

比如刚才那个题为"如何找出两个不级格的"

[解决办法]
SQL code
select sum(case  when 注册时间>=@开始时间  then 1 else 0 end),sum(1) from 表 where 注册时间<=@终止时间
[解决办法]
呵呵
[解决办法]
不允许笑,严肃点,这么晚不睡觉
[解决办法]
MD,MM去约会了,我只好待这里了.
[解决办法]
MM不在,我找鬼去约会啊?
[解决办法]
找小陈呀,现在出名得很
[解决办法]
我不好这口,我让给你.
[解决办法]
我更不好这个呀,SS吧
[解决办法]
SQL code
select '期间记录数:'+rtrim(count(*)) from t where 注册时间 between  开始日期 and  结束日期unionselect '总记录数:'+rtrim(count(*)) from t
[解决办法]
SQL code
select 地区, [期间人数]=sum(case  when 注册时间>=@起始日期  then 1 else 0 end),[总人数]=sum(1) from 表 where 注册时间<=@结束日期 group by 地区
[解决办法]
呵呵,把问题描述清楚了很重要...
否则,别人的答案往往不是你需要的
[解决办法]
SQL code
-->测试数据: partycreate table party (用户名 varchar(2),地区 varchar(4),注册时间 datetime)insert into partyselect 'aa','山东','2007-03-05' union allselect 'bb','广东','2008-02-11' union allselect 'cc','山东','2008-03-05'/*用户从界面上选择时间  起始日期  结束日期如用户选择 起始日期为2008-01-01 结束日期为2008-03-05查询要出的结果:地区        期间人数     总人数(注:这个人数是根据结束日期得到)山东          1         2广东          1           1*/declare @Start datetime, @End datetimeselect @Start = '2008-01-01', @End = '2008-03-05'select    地区,    期间人数=sum(case when 注册时间>=@Start and 注册时间<=@End then 1 else 0 end),    总人数=sum(case when 注册时间<=@End then 1 else 0 end)from    partygroup by    地区/*地区   期间人数        总人数         ---- ----------- ----------- 广东   1           1山东   1           2*/-->删除测试drop table party 


[解决办法]
送你一句话,你出的题目很垃圾!可能是我笨,不过我发现你的起始日期就是有什么用呢?
[解决办法]
select count(distinct(用户名)) as '记录数' from tb
where dt between '开始时间' and '结束时间'
group by 用户名


[解决办法]

SQL code
declare @dt1 as datetimedeclare @dt2 as datetimeset @dt1 = '2008-1-10'set @dt2 = '2008-3-9'select sum(case when 注册时间>=@dt1 then 1 else 0 end) as 期间记录数,count(1) as 到终止时间的记录数from tb where 注册时间<=@dt2
[解决办法]
between 很容易搞定

巨难…… - -!!!
[解决办法]
23楼的写的可以实现了,如果不想分地区的话,直接这样写就可以了.
SQL code
DECLARE @Start datetime, @End datetimeSELECT @Start = '2008-01-01', @End='2008-03-09'SELECT         期间人数=sum(case when 注册时间>=@Start and 注册时间<=@End THEN 1 else 0 end),    总人数=sum(case when 注册时间<=@End then 1 else 0 end)from    [Party] 

热点排行