2016-04-23 12 views
0

Ich habe folgende Daten in einer Tabelle das heißt Nein, Datum und SchrittWie füllen bisherigen Rekord

+---------+----------------------------+----------------------------+ 
| No |      Date |   Step   | 
+---------+----------------------------+----------------------------+ 
| 643995G | 03/12/2012 3:22:48 PM  | TransferInStart   | 
| 643995G | 03/12/2012 3:22:50 PM  |       | 
| 643995G | 15/02/2013 10:53:57 AM  | Hold      | 
| 643995G | 15/02/2013 10:54:00 AM  | Hold Copy Processing Start | 
| 643995G | 20/02/2013 4:38:26 PM  |       | 
| 643995G | 21/02/2013 3:27:01 PM  | ExceptionStart    | 
| 643995G | 22/02/2013 9:38:32 AM  | ExceptionEnd    | 
| 643995G | 22/02/2013 9:39:32 AM  |       | 
| 643995G | 22/02/2013 10:04:53 AM  |       | 
| 643995G | 22/02/2013 10:04:56 AM  |       | 
| 643995G | 25/02/2013 10:48:18 AM  | TransferIn     | 
| 643995G | 25/02/2013 10:48:19 AM  | CatalougingStart   | 
| 643995G | 27/02/2013 1:59:44 PM  |       | 
| 643995G | 27/02/2013 1:59:45 PM  |       | 
| 643995G | 27/02/2013 2:05:01 PM  | Catalouging    | 
| 643995G | 27/02/2013 2:05:02 PM  | ProcessingStart   | 
| 643995G | 27/02/2013 6:09:51 PM  |       | 
| 643995G | 27/02/2013 6:09:52 PM  |       | 
| 643995G | 04/03/2013 2:03:16 PM  |       | 
| 643995G | 04/03/2013 2:03:17 PM  | Hold Copy Processing Start | 
| 643995G | 11/03/2013 2:27:14 PM  |       | 
| 643995G | 12/03/2013 10:09:55 AM  | ExceptionStart    | 
| 643995G | 12/03/2013 10:10:27 AM  | ExceptionEnd    | 
| 643995G | 12/03/2013 10:10:52 AM  |       | 
| 643995G | 12/03/2013 10:11:27 AM  |       | 
| 643995G | 12/03/2013 10:28:37 AM  |       | 
| 643995G | 12/03/2013 10:46:21 AM  | Processing     | 
+---------+----------------------------+----------------------------+ 

gerne mit dem vorherigen Schritt in den leeren Datensätze füllen. Nach dem Füllen des obigen Wertes, wo auch immer ich das Exception Start und Exception End fand, möchte ich mit dem obigen Wert füllen. Bitte beziehen Sie sich auf die Beispiele blast step2 und Step3.

+---------+------------------------+----------------------------+----------------------------+----------------------------+ 
| No |   Date   |  ProcessStep   |   Step2   |   Step3   | 
+---------+------------------------+----------------------------+----------------------------+----------------------------+ 
| 643995G | 03/12/2012 3:22:48 PM | TransferInStart   | TransferInStart   | TransferInStart   | 
| 643995G | 03/12/2012 3:22:50 PM |       | TransferInStart   | TransferInStart   | 
| 643995G | 15/02/2013 10:53:57 AM | Hold      | Hold      | Hold      | 
| 643995G | 15/02/2013 10:54:00 AM | Hold Copy Processing Start | Hold Copy Processing Start | Hold Copy Processing Start | 
| 643995G | 20/02/2013 4:38:26 PM |       | Hold Copy Processing Start | Hold Copy Processing Start | 
| 643995G | 21/02/2013 3:27:01 PM | ExceptionStart    | ExceptionStart    | Hold Copy Processing Start | 
| 643995G | 22/02/2013 9:38:32 AM | ExceptionEnd    | ExceptionEnd    | Hold Copy Processing Start | 
| 643995G | 22/02/2013 9:39:32 AM |       | ExceptionEnd    | Hold Copy Processing Start | 
| 643995G | 22/02/2013 10:04:53 AM |       | ExceptionEnd    | Hold Copy Processing Start | 
| 643995G | 22/02/2013 10:04:56 AM |       | ExceptionEnd    | Hold Copy Processing Start | 
| 643995G | 25/02/2013 10:48:18 AM | TransferIn     | TransferIn     | TransferIn     | 
| 643995G | 25/02/2013 10:48:19 AM | CatalougingStart   | CatalougingStart   | CatalougingStart   | 
| 643995G | 27/02/2013 1:59:44 PM |       | CatalougingStart   | CatalougingStart   | 
| 643995G | 27/02/2013 1:59:45 PM |       | CatalougingStart   | CatalougingStart   | 
| 643995G | 27/02/2013 2:05:01 PM | Catalouging    | Catalouging    | Catalouging    | 
| 643995G | 27/02/2013 2:05:02 PM | ProcessingStart   | ProcessingStart   | ProcessingStart   | 
| 643995G | 27/02/2013 6:09:51 PM |       | ProcessingStart   | ProcessingStart   | 
| 643995G | 27/02/2013 6:09:52 PM |       | ProcessingStart   | ProcessingStart   | 
| 643995G | 04/03/2013 2:03:16 PM |       | ProcessingStart   | ProcessingStart   | 
| 643995G | 04/03/2013 2:03:17 PM | Hold Copy Processing Start | Hold Copy Processing Start | Hold Copy Processing Start | 
| 643995G | 11/03/2013 2:27:14 PM |       | Hold Copy Processing Start | Hold Copy Processing Start | 
| 643995G | 12/03/2013 10:09:55 AM | ExceptionStart    | ExceptionStart    | Hold Copy Processing Start | 
| 643995G | 12/03/2013 10:10:27 AM | ExceptionEnd    | ExceptionEnd    | Hold Copy Processing Start | 
| 643995G | 12/03/2013 10:10:52 AM |       | ExceptionEnd    | Hold Copy Processing Start | 
| 643995G | 12/03/2013 10:11:27 AM |       | ExceptionEnd    | Hold Copy Processing Start | 
| 643995G | 12/03/2013 10:28:37 AM |       | ExceptionEnd    | Hold Copy Processing Start | 
| 643995G | 12/03/2013 10:46:21 AM | Processing     | Processing     | Processing     | 
+---------+------------------------+----------------------------+----------------------------+----------------------------+ 

Input

Output

+0

Bitte kennzeichnen Sie Ihre Frage mit der Datenbank, die Sie verwenden. –

Antwort

1

Verschiedene Datenbanken haben verschiedene Möglichkeiten, dieses Problem zu lösen. Eine Methode verwendet eine korrelierte Unterabfrage in einem select. Ein typisches Verfahren kann in ANSI-Standard SQL ausgedrückt werden als:

update t 
    set step2 = (select t2.processstep 
        from t t2 
        where t2.no = t.no and 
         t2.date <= t.date and 
         t2.processstep is not null 
        order by date desc 
        fetch first 1 row only 
       ); 

In einigen Datenbanken, würden Sie limit oder top verwenden, um die erste Reihe zu bekommen. Trotzdem funktioniert dies möglicherweise nicht in allen Datenbanken, aber etwas ähnliches wird wahrscheinlich funktionieren.