Tsql 我需要找到第n个实例

Tsql 我需要找到第n个实例,tsql,Tsql,我正在编写一个T-SQL数据库来帮助我识别足球统计数据的趋势 每场比赛我都有几行数据,每一行表示一个事件,比如一个进球或一个角球 我正在努力找出每场比赛谁能赢得3、5、7和9个角球 我甚至想不出一个方法来解决这个问题。有人能帮忙吗 我试过查看case语句和temp表,但就是找不到得到我想要的东西的方法 数据看起来像这样 Event Team Time (mins) corner home 32 corner home 78 corner away 86 corn

我正在编写一个T-SQL数据库来帮助我识别足球统计数据的趋势

每场比赛我都有几行数据,每一行表示一个事件,比如一个进球或一个角球

我正在努力找出每场比赛谁能赢得3、5、7和9个角球

我甚至想不出一个方法来解决这个问题。有人能帮忙吗

我试过查看case语句和temp表,但就是找不到得到我想要的东西的方法

数据看起来像这样

Event   Team    Time (mins)
corner  home    32
corner  home    78
corner  away    86
corner  home    12
corner  away    89
corner  away    36
所以我想找出第三,第五,第七和第九个例子,如果它们存在的话,每个主角和客场角都是一样的。因此,如果有意义的话,每个类别的两次比赛中较低的一次将赢得比赛

在上面的例子中,主队将赢得比赛,因为第三个角球发生在第78分钟,而第三个客场角球发生在第89分钟。

通过此查询:

select e.*, 
(select count(*) from events
  where team = e.team and event = e.event and time < e.time) + 1 counter
from events e 
order by e.time
你可以按时间顺序得到所有事件,每个事件都有一个计数器。您可以这样使用它:

select top 1 t.team
from (
  select e.*, 
    (select count(*) from events
    where team = e.team and event = e.event and time < e.time) + 1 counter
  from events e
) t
where event = 'corner' and counter = 3
order by t.time 
获得三个角球的获胜队伍。 有关此查询,请参见。

select e.*, 
(select count(*) from events
  where team = e.team and event = e.event and time < e.time) + 1 counter
from events e 
order by e.time
你可以按时间顺序得到所有事件,每个事件都有一个计数器。您可以这样使用它:

select top 1 t.team
from (
  select e.*, 
    (select count(*) from events
    where team = e.team and event = e.event and time < e.time) + 1 counter
  from events e
) t
where event = 'corner' and counter = 3
order by t.time 
获得三个角球的获胜队伍。
请参见主队的。

类似内容:

从您的_表行中选择前9*,按时间排序为RowNum,其中RowNum=3或RowNum=5或RowNum=7或RowNum=9,团队='Home'


你会为客队创造类似的东西…

像这样的东西为主队:

从您的_表行中选择前9*,按时间排序为RowNum,其中RowNum=3或RowNum=5或RowNum=7或RowNum=9,团队='Home'


你会为客队创造类似的东西…

绝对的超级明星。非常感谢你!为了这个,我整晚都在纠结!!!如果这解决了你的问题,考虑接受这个答案绝对超级巨星。非常感谢你!为了这个,我整晚都在纠结!!!如果这解决了你的问题,考虑接受这个答案。