2016-07-07 8 views
0

So habe ich diese Tabelle:Rangfolge mit Terminen

promo_id  transac_id  date 
--------  ----------  ---- 

656265   213516  05/21/2016 
656265   213520  05/21/2016 
656265   213521  05/21/2016 
656265   213530  05/22/2016 
656265   213540  05/25/2016 
895134   365124  06/01/2016 
895134   365130  06/03/2016 
895134   365135  06/04/2016 

Wie konnte ich die transac_id Rang auf der Grundlage der date mit den gleichen promo_id? Das ist, was ich sehen möchte:

promo_id  transac_id  date  rank 
--------  ----------  ----  ---- 

656265   213516  05/21/2016  1 
656265   213520  05/21/2016  2 
656265   213521  05/21/2016  3 
656265   213530  05/22/2016  4 
656265   213540  05/25/2016  5 
895134   365124  06/01/2016  1 
895134   365130  06/03/2016  2 
895134   365135  06/04/2016  3 
+0

Was ist mit dem letzten Datum? – Drew

+0

Oh, Entschuldigung. Tippfehler :) –

Antwort

0

Schema:

create table t1 
( id int not null, 
    thedate date not null 
); 
insert t1 (id,thedate) values (1,'2017-01-02'),(2,'2016-01-02'),(3,'2018-01-02'); 

query:

SELECT id,thedate,@rn:[email protected]+1 as rank 
FROM t1 
cross join (select @rn:=0) xParams 
ORDER BY thedate; 

+----+------------+------+ 
| id | thedate | rank | 
+----+------------+------+ 
| 2 | 2016-01-02 | 1 | 
| 1 | 2017-01-02 | 2 | 
| 3 | 2018-01-02 | 3 | 
+----+------------+------+ 

xParams ist eine abgeleitete Tabellennamen. Jede abgeleitete Tabelle benötigt einen Namen. Es ist für einen cross join, die Variable (@rn) für das Ranking zu initialisieren.

+0

Danke für die Antwort. Ich brauche eigentlich eine andere Spalte, wo ihr Rang ist. –

+0

SQ Fiddle basierend auf @Bruce Davin Wilners Antwort [link] (http://sqlfiddle.com/#!9/0bcca) –

Verwandte Themen