SQL:查询同一个表中的一列

Mih*_*agy 4 sql sql-server

这里有足球经理.我如何能:

  1. 选择所有已经开球但从未有过进球的比赛.
  2. 选择所有比赛在1小时前开球,但还没有进球或角球.

    | Match | Event       | EventTime           |
    |-------------------------------------------|
    | 1     | Kick-off    | 2014-12-15T16:00:00 |
    | 1     | Throw-in    | 2014-12-15T16:15:00 |
    | 1     | Goal        | 2014-12-15T16:20:00 |
    | 1     | Corner-kick | 2014-12-15T16:30:00 |
    | 1     | End         | 2014-12-15T17:30:00 |
    | 2     | Kick-off    | 2014-12-10T16:00:00 |
    | 2     | Goal        | 2014-12-10T16:01:00 |
    | 3     | Kick-off    | 2014-12-05T08:00:00 |
    | 3     | Corner-kick | 2014-12-05T08:10:00 |
    
    Run Code Online (Sandbox Code Playgroud)

我觉得这应该很简单,但不知何故我被卡住了.

Lam*_*mak 5

1:

SELECT DISTINCT Match
FROM dbo.YourTable A
WHERE [Event] = 'Kick-off'
AND NOT EXISTS( SELECT 1 FROM dbo.YourTable 
                WHERE Match = A.Match
                AND [Event] = 'Goal')
Run Code Online (Sandbox Code Playgroud)

2:

SELECT DISTINCT Match
FROM dbo.YourTable A
WHERE [Event] = 'Kick-off' 
AND EventTime <= GETDATE(HOUR,-1,GETDATE())
AND NOT EXISTS( SELECT 1 FROM dbo.YourTable 
                WHERE Match = A.Match
                AND [Event] IN ('Goal','Corner-kick'))
Run Code Online (Sandbox Code Playgroud)