说你有
SomeTable(Key,StartDate,EndDate)
Select Key,DateDiff(minute,StartDate,EndDate) From SomeTable as RawValue
会给你每把钥匙和分钟差
所以
Select Key,
Case When RawValue < 30 Then "Less than 30 minutes"
Case When RawValue between 30 and 60 then "Less than an hour"
...
else 'Over 7 days' as HistValue
From
(
Select Key,DateDiff(minute,StartDate,EndDate) From SomeTable as RawValue
) RawValues
会给你每个键和差异的范围
所以
Select HistValue,Count(*) From
(
Select Key,
Case When RawValue < 30 Then "Less than 30 minutes"
Case When RawValue between 30 and 60 then "Less than an hour"
...
else 'Over 7 days' as HistValue
From
(
Select Key,DateDiff(minute,StartDate,EndDate) From SomeTable as RawValue
) RawValues
) UncountedValues
你能一口气给你很多吗,反正我的头上。
如果您想要一个更通用的解决方案,那么一种方法是定义一个持续时间表
例如
Category MinMinutes MaxMinutes
"Less than 30" 0 30
取出硬编码并加入
例如
Inner join Duration On BucketMinutes between MinMinutes and MaxMinutes