【发布时间】:2011-08-18 15:26:54
【问题描述】:
TID StartTime Uid WId
1 2011-06-06 09:30:00.000 10 1.5
2 2011-06-06 09:40:00.000 10 3.5
3 2011-06-06 09:50:00.000 10 1.0
4 2011-06-06 10:45:00.000 10 2.5
5 2011-06-06 10:50:00.000 10 1.5
6 2011-06-06 10:55:00.000 10 0
7 2011-06-06 11:30:00.000 10 0
8 2011-06-06 11:35:00.000 10 0
9 2011-06-06 11:40:00.000 10 0
10 2011-06-06 11:43:00.000 10 0
11 2011-06-06 11:20:00.000 11 7.0
12 2011-06-06 11:30:00.000 11 1.0
我有 Table TblTask 中的数据,我需要编写一个查询来计算 (sum(Wid) 或 Count(TID's)) 基于每个 Starttime 的时差与另一个时差为 1 小时或接近 1 小时的 starttime按 UID 分组。
例如取第一次开始时间(2011-06-06 09:30:00.000); =5.0 或行数 >=5)。这里的权重是 (1.5+3.5+1.0=6.0) 前 3 行 TID (1,2,3) 作为 weight>=5 我们需要显示记录和 TID 的 (3,4,5) 这里的权重是 (1.0+2.5+1.5=5.0) For TID'd(4,5,6,7,8,9,10) Here Count (TID's is 7) 所以我想显示从 4 到 10 的所有记录
对于 TID's(5,6,7,8,9,10) 作为计数(TID's > 5)我想显示从 5 到 10 的所有记录
对于 TID(6,7,8,9,10) 作为计数(TID 为 = 5),我想显示从 6 到 10 的所有记录
对于 TID 11 作为 WID > 5 我想显示记录 11
对于作为 WID >5 的 TID (11,12),我想再次显示记录 11 和 12
期望的输出是:
TID StartTime Uid
1 2011-06-06 09:30:00.000 10
2 2011-06-06 09:40:00.000 10
3 2011-06-06 09:50:00.000 10
3 2011-06-06 09:50:00.000 10
4 2011-06-06 10:45:00.000 10
5 2011-06-06 10:50:00.000 10
4 2011-06-06 10:45:00.000 10
5 2011-06-06 10:50:00.000 10
6 2011-06-06 10:55:00.000 10
7 2011-06-06 11:30:00.000 10
8 2011-06-06 11:35:00.000 10
9 2011-06-06 11:40:00.000 10
10 2011-06-06 11:43:00.000 10
5 2011-06-06 10:50:00.000 10
6 2011-06-06 10:55:00.000 10
7 2011-06-06 11:30:00.000 10
8 2011-06-06 11:35:00.000 10
9 2011-06-06 11:40:00.000 10
10 2011-06-06 11:43:00.000 10
6 2011-06-06 10:55:00.000 10
7 2011-06-06 11:30:00.000 10
8 2011-06-06 11:35:00.000 10
9 2011-06-06 11:40:00.000 10
10 2011-06-06 11:43:00.000 10
11 2011-06-06 11:20:00.000 11
11 2011-06-06 11:20:00.000 11
12 2011-06-06 11:30:00.000 11
【问题讨论】:
-
你能不能再试试重述你的算法?如果它们是连续的,但总是在一个小时后将带的开始时间重置到下一个起点,您想要每小时带吗?
标签: sql sql-server sql-server-2005 tsql sql-server-2008