我甚至不确定这是否可以仅使用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
对这个问题的粗暴表示道歉,但我有点像新手。
答案 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