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

怎么写一段sql

2012-03-20 
如何写一段sql?regocostcenternamestartdateenddateAE70PV51417 647022007-01-012007-09-17AE70PV51417 34

如何写一段sql?
rego costcentername startdate enddate
AE70PV51417 647022007-01-012007-09-17 
AE70PV51417 345042007-09-182100-01-01 
AK11ZS51417 345012007-01-012007-09-16 
AK11ZS51417 XX1982007-09-172100-01-01 
AK83HB51417 663032007-02-272007-09-06 
AK83HB51417 345042007-09-072100-01-01 
AM77KA51417 345012007-01-012007-09-16 
AM77KA51417 XX1982007-09-172100-01-01 
AP32XJ51417 275102007-06-282007-09-12 
AP32XJ51417 XX2322007-09-132007-09-25 
AP32XJ51417 275102007-09-262100-01-01 
AP98XI51417 643022007-06-292007-09-17 
AP98XI51417 647022007-09-182100-01-01 
AQ23AY51417 XX2542007-07-142007-09-11 
AQ23AY51417 275102007-09-122007-09-25 
AQ23AY51417 275032007-09-262100-01-01 

这样一张表中如何通过sql语句把相同rego在指定时间段中所占天数多的数据提取出来(时间段为:2007.9.1~2007.9.30)
如:
rego为:AE70PV, 有两条记录,一条在指定时间段占了16天,一条占了14天,只要把占16天的数据取出就可以了
不知道有那位高手会写这样的sql,谢谢了

[解决办法]

SQL code
select    t.*from    表 twhere    not exists(select 1 from 表 where rego=t.rego and datediff(dd,startdate,enddate)>datediff(dd,t.startdate,t.enddate))
[解决办法]
select a.*
(
select * , datediff(day,startdate,enddate) 天数 from tb
) a,
(
select rego , max(天数) 天数 from 

select * , datediff(day,startdate,enddate) 天数 from tb
) t
group by rego
) b
where a.rego = b.rego and a.天数 = b.天数

热点排行