拥有一个包含datetime_in,datetime_out,card_id,group的表。知道我想要输出以下事项:
group ; date ; quarterTime ; persons_in ; hours
group1 ; 17-02-2010 ; 00:00 - 00:15 ; 0 ; 0
group1 ; 17-02-2010 ; 00:15 - 00:30 ; 0 ; 0
group1 ; 17-02-2010 ; 00:30 - 00:45 ; 0 ; 0
~etc
group1 ; 17-02-2010 ; 13:00 - 12:15 ; 334 ; 1483
end then the same for all the groups starting with 00:00 until 23:45
因此对于当天的每个出租车我想要一个记录,按组,日期(以天为单位)和季度时间分组。然后在people_in中我希望记录计数在该季度内,并且在几个小时内,当天总共有多少人工作小时,直到当前季度结束。因此,每天只能获得更高和更高,而people_in只计算在该季度内。所以我的问题是,我现在有一个非常脏的C#脚本这样做,为了优化我想运行只有1个查询。
我不介意使用存储过程,但由于我在sql中不是很好,我更喜欢T-SQL。
任何人都知道如何做到这一点?例子吗
答案 0 :(得分:2)
您可以使用此逻辑转换分组日期:
SELECT
CONVERT(bigint,Year(GETDATE())) * power(10,7) +
Month(GETDATE()) * POWER(10,5) +
Day(GETDATE()) * POWER(10,3) +
Datepart(hh,GETDATE()) * POWER(10,1) +
DATEPART(mi,GETDATE()) / 15 AS Agg_Date
19/12/2011 13:31 => 20111219132
每15分钟都有相同的密钥。