SQL Server“Group By”是一个有趣的案例

时间:2010-04-26 07:59:02

标签: tsql sql-server-2000 group-by sequential

我有一张这样的表

   ID    ORDER  TEAM   TIME
   IL-1   1   A_Team   11
   IL-1   2   A_Team   3
   IL-1   3   B_Team   2
   IL-1   4   A_Team   1
   IL-1   5   A_Team   1
   IL-2   1   A_Team   5
   IL-2   2   C_Team   3

我想要的是将同样命名的团队分组,这些团队也是顺序团队(根据ORDER列)

因此结果表应该看起来像

IL-1  1  A_Team 14
IL-1  2  B_Team 2
IL-1  3  A_Team 2
IL-2  1  A_Team 5
IL-2  2  C_Team 3

由于

编辑:根据nang的回答,我将ID列添加到我的表中。

1 个答案:

答案 0 :(得分:0)

您的示例中存在问题。第6行和第2行为什么不是“顺序团队”?

1 A_Team 5

2 A_Team 3

但是,以下内容可能对您有用:

select neworder, name, sum([time]) from  (
select min(n1.[order]) neworder, n2.[order], n2.name, n2.[time]
from mytable n1, mytable n2
where n1.Name = n2.Name
and n2.[order] >= n1.[order]
and not exists(select 1 from mytable n3 where n3.name != n1.name and n3.[order] > n1.[order] and n3.[order] < n2.[order])
group by n2.[order], n2.name, n2.[time]) x
group by neworder, name

结果:

新订单名称(无列名称)

1 A_Team 19

4 A_Team 2

3 B_Team 2

2 C_Team 3