计算范围内的约会

时间:2012-12-07 12:14:42

标签: sql-server-2005

我需要帮助才能在sql 2005中创建一个查询。

我有4个日期:1个标准开始日期和3个日期进行比较。 我需要在10天的范围内计算日期。

datediff(day,startdate,enddate1)

从1到10,从11到20以及从21到30的范围将出现多少次。

这是每3个结束日期!

然后是所有(3个结束日期)1到10个aso(510次< 11,275次> 10和< 21)的总和

计算所有结束日期的范围百分比。

如510/785 = XX.XX%和275/785 = XX.XX%

我能说清楚吗?

提前致谢 1SeoAdvies

@ mitch-wheat,这不是一个糟糕的问题,这是一个难以解释的问题! 没有表可以解释这一点。几乎每个表都有一个数据时间字段!

我会再次尝试用非常简单的英语来解释这一点。 我有一个带有日期时间字段的表。在excelsheet中我有另一个日期时间。 两者都有相同的关键。 我知道如何计算天数。 我想知道1到10之间的日期会出现多少次。

示例:

datediff(day,DateTime1,DateTime2)= 2

datediff(day,DateTime1,DateTime2)= 3

datediff(day,DateTime1,DateTime2)= 11

datediff(day,DateTime1,DateTime2)= 2

datediff(day,DateTime1,DateTime2)= 3

datediff(day,DateTime1,DateTime2)= 11

datediff(day,DateTime1,DateTime2)= 7

datediff(day,DateTime1,DateTime2)= 6

结果是

    < 11  = ***6*** (smaller then 11)
  

10且&lt; 21 = 2 (10到21之间)

求和结果6 + 2 = 8

计算百分比:

小于11 = 6 \ 8 = 75%

大于11 +&lt; 21 = 2 \ 8 = 25%

粗体/反面项是我需要的值!

我现在能让自己清楚了吗?????????

提前致谢

1 个答案:

答案 0 :(得分:1)

SQL Fiddle

MS SQL Server 2008架构设置

create table YourTable
(
  dt1 datetime,
  dt2 datetime
)

insert into YourTable values(getdate(), dateadd(day, 2, getdate()))
insert into YourTable values(getdate(), dateadd(day, 3, getdate()))
insert into YourTable values(getdate(), dateadd(day, 11, getdate()))
insert into YourTable values(getdate(), dateadd(day, 2, getdate()))
insert into YourTable values(getdate(), dateadd(day, 3, getdate()))
insert into YourTable values(getdate(), dateadd(day, 11, getdate()))
insert into YourTable values(getdate(), dateadd(day, 7, getdate()))
insert into YourTable values(getdate(), dateadd(day, 6, getdate()))

查询1

select S1 / S2 as 'smaller than 11',
       (S2 - S1) / S2 as 'greater than 11 + < 21'
from (
     select 1.0 * sum(case when datediff(day, dt1, dt2) < 11 then 1 else 0 end) as S1,
            1.0 * sum(case when datediff(day, dt1, dt2) < 21 then 1 else 0 end) as S2
     from YourTable
     where datediff(day, dt1, dt2) < 21
     ) as T

<强> Results

| SMALLER THAN 11 | GREATER THAN 11 + < 21 |
--------------------------------------------
|            0.75 |                   0.25 |