SQL:更新主查询中每行的子查询

时间:2013-07-26 14:06:11

标签: sql sql-server-2012

我在一张桌子上有一份足球比赛结果列表,每一行都是一场比赛,包含来自该比赛的所有数据,如主场(球队),主场球场,客场球队,客队(球队),我想在每场比赛中循环,获得主队,检查他们的最后6场比赛,并且只显示指定球队在过去6场比赛中至少有一场比赛中打入4球或以上的比赛。

我有以下代码,根据游戏日期创建一个表,按队名和数字划分每一行,然后再次遍历表格,只显示符合上述条件的游戏。

问题是我需要'Last6'表根据主查询中引用的游戏日期更新自己,这样我才能从该日期获得最后6个游戏。目前它只是从桌面最后一场比赛中获得最后6场比赛。

WITH Last6
AS (
  SELECT Home
    ,HomeGoals
    ,ROW_NUMBER() OVER (
      PARTITION BY Home ORDER BY Goals.DATE DESC
      ) GameNumber
  FROM Goals
  )
SELECT *
FROM Goals G
WHERE EXISTS (
    SELECT NULL
    FROM Last6
    WHERE G.Home = Last6.Home
      AND GameNumber <= 6
      AND HomeGoals >= 4
    )

有没有人知道如何做到这一点?

0 个答案:

没有答案