-5

こんにちは、ここに車両検査データベースがあり、対応する TicketStatus で 2 つ目以降の EventTime または Min(EventTime) より大きいコードを sql に持っています。テーブルは [Event] および [Car] です... [Event] テーブルにはフィールド CarID (FK) があります。EventTime; TicketStatus... [Car] テーブルにはフィールド CarID (PK) があります。プレート番号; パッケージ

注: [Car].CarID データ型は一意の識別子です。{16F0151E-1938-4487-BB75-FF446B4DB7FF}

コードを実行すると、CarID、EventTime、TicketStatus が得られます。結果として CarID は必要ありません。テーブル [Car]、TicketStatus、EventTime、および条件 [Car] からの PlateNo が必要です。Package = 4

SELECT CarID, TicketStatus, [EventTime]  
FROM 
  (SELECT ROW_NUMBER() OVER 
       (PARTITION BY CarID ORDER BY [EventTime] ASC) AS [index]
       , CarID, TicketStatus, [EventTime] 
   FROM vehicle.dbo.Event Event) A  
 WHERE [index] > 1 
4

1 に答える 1

1

あなたが何を望んでいるかを正しく理解していれば、このような表を使用する必要がJOINありCarます

SELECT c.PlateNo, TicketStatus, EventTime 
  FROM 
(
  SELECT ROW_NUMBER() OVER 
       (PARTITION BY CarID ORDER BY EventTime) AS rnum
       , CarID, TicketStatus, EventTime
   FROM Event
) a JOIN Car c
   ON a.CarID = c.CarID  
 WHERE c.Package = 4
   AND a.rnum > 1

また

SELECT PlateNo, TicketStatus, EventTime
  FROM 
(
  SELECT e.CarID, e.TicketStatus, e.EventTime, c.PlateNo,
         ROW_NUMBER() OVER 
         (PARTITION BY e.CarID ORDER BY e.EventTime) AS rnum 
    FROM Event e JOIN Car c 
      ON e.CarID = c.CarID 
   WHERE c.Package = 4
) a
 WHERE a.rnum > 1

これがSQLFiddleのデモです

于 2013-07-27T08:30:02.027 に答える