SQL:显示条件循环的结果

时间:2013-07-19 15:53:09

标签: sql

我甚至不确定这是否可以仅使用SQL,但这里有......

我在一个表中有一个足球结果列表,每一行都是一个匹配并包含该匹配的所有数据,我想循环每场比赛,获得主队,检查他们的最后6场比赛并仅显示比赛指定球队在过去6场比赛的50%或以上的比赛中打入2球以上的球员。

到目前为止,我有这个,我只是不知道如何将它拼接在一起......

创建所有游戏的列表,仅返回主队:

SELECT Date, Home
FROM [FDATA].[dbo].[Goals]
ORDER BY Date

获得该团队的最后6场比赛:

SELECT TOP 6 *
FROM [FDATA].[dbo].[Goals]
WHERE Home = 'home from first query'  AND Date <= 'date from first query'  
ORDER BY Date DESC

然后检查球队是否在返回的6场比赛的&gt; = 50%中得分为2个或更多,如果为真,则从第一个查询中输出该行:

SELECT *
FROM last query
WHERE HomeGoals >= 2
ORDER BY Date DESC 

对这个问题的粗暴表示道歉,但我有点像新手。

1 个答案:

答案 0 :(得分:0)

只需要两个查询:

SELECT home, count(1) cnt
FROM 
(
     SELECT TOP 6 G1.HomeGoals, G1.Home
       FROM [FDATA].[dbo].[Goals] AS G1 
          LEFT OUTER JOIN
            [FDATA].[dbo].[Goals] AS G2 ON
           G1.Home = G2.HOME  AND G1.Date <= G2.Date  
     ORDER BY G1.Date DESC    
)
WHERE HomeGoals >= 2
GROUP BY home
HAVING count(1) >= 3