2016-12-14 4 views
0

Ich habe eine Situation ... ich diese Spalten - Tabelle XPostgreSQL Multiple-Update

Product Number LastEditDate GUID 
A   0  14.12.16  A1 
A   0  10.12.16  A2 
B   0  10.12.16  A3 
B   0  13.12.16  A4 
C   0  13.12.16  A5 
C   0  14.12.16  A6 

Nun muss ich Nummer 1 für alle Produkte setzen, wo das Datum der Max ist. Ich wurde mit dieser Abfrage:

update X set Number=0; 
update X set Number=1 where LastEditDate in (select Max(LastEditDate) from X Group by Product); 

dies mir So gibt etwa so:

Product Number LastEditDate 
A   1   14.12.16 
A   0   10.12.16 
B   0   10.12.16 
B   1   13.12.16 
C   0   13.12.16 
C   1   14.12.16 

Aber mit meiner Anfrage, ich habe: 1; 0; 0; 1; 1; 1; weil 13.12.16 wird darin sein "wählen Sie Max (LastEditDate) von X). Wie man das macht, um Ergebnisse zu haben: 1; 0; 0; 1; 0; 1;

Bitte helfen Sie ! für das Paar

+0

Sorry, sollte es eine "nach Produktgruppe" sein ... ich verpasst ... – Andrei

+0

Bearbeiten Sie Ihre Frage, anstatt einen Kommentar zu verwenden. – McNets

+0

Gibt es für jede Zeile in dieser Tabelle eine eindeutige ID? – McNets

Antwort

1

Sie (product, lasteditdate) aussehen:

update x 
set number = 1 
where (product, lasteditdate) in (
    select product, max(lasteditdate) 
    from x 
    group by product); 
+0

Danke, ich denke, das sollte funktionieren. Ich verstehe einfach nicht, warum ich das vorher nicht getan habe? :) Danke – Andrei

0

Sie können es hier ansehen: es http://rextester.com/YVLK16496

with t1 as (
    select Product, Max(LastEditDate) as MaxDate from t group by Product 
) 
update t 
set Number=1 
from t1 
where t.Product = t1.Product and t.LastEditDate = t1.MaxDate; 
+0

Das könnte auch für mich funktionieren, aber ich werde die "Klin" Antwort versuchen. Vielen Dank – Andrei