2017-01-11 19 views
0

ich nach einem Weg suchen Zeilen in einer Tabelle vergleichen:Vergleichen Zeilen mit Bedingungen

Beispiel 1

ID  StartDate  TerminationDate 
1   01.01.2010 NULL 
1   01.01.2011 NULL 
1   05.01.2011 NULL   
1   01.01.2017 NULL  
2   01.01.2010 31.12.2010 
2   01.01.2011 NULL 
2   05.01.2011 NULL   
2   01.01.2017 NULL 
3   01.01.2010 31.12.2011 
3   01.01.2011 31.12.2011 
3   05.01.2011 NULL 
3   01.01.2017 NULL 
4   01.01.2010 31.12.2011 
4   01.01.2011 31.12.2011 
4   05.01.2015 NULL 
4   01.01.2017 NULL 

Ergebnis:

ID  StartDate  
1   01.01.2010 
2   01.01.2011 
3   01.01.2010 
4   05.01.2015 

Wenn kein TerminationDate für eine ID gegeben Ich möchte das Minimum von StartDate anzeigen. In diesem Fall 01.01.2010.

Für ID 2 wird jedoch ein TerminationDate angegeben. In diesem Fall muss ich prüfen, ob das zweite StartDate> erstes TerminationDate (01.01.2011> 31.12.2010) ist. Wenn zweites StartDate> erstes TerminationDate und zweites TerminationDate entweder Null oder> drittes StartDate ist, dann möchte ich 01.01.2011 anzeigen. Ansonsten würde ich auf die gleiche Weise das nächste StartDate überprüfen.

Die ID kann als ein Client gesehen werden und jede Zeile steht für einen Vertrag. Solange mindestens ein Vertrag besteht, möchte ich das erste StartDate. ID 4 wäre ein Beispiel dafür, wo zwischen dem 31.11.2011 und dem 05.01.2015 kein Vertrag bestand. Das Mindeststartdatum ist daher der 05.01.2015.

Ich hoffe, Sie bekommen die Idee hinter meiner Frage. Danke im Voraus!

Antwort

0

Hier ist die erste Hälfte Ihrer Lösung mit einer GROUP BY und COALESCE. Hoffentlich reicht es, um loszulegen.

 SELECT 
      [id], 
      [NewDate] = COALESCE(date1, MIN(date2)) 
     FROM 
      TheTable 
     GROUP BY 
      [id] 
     ORDER BY 
      [id] 
+0

Ich habe meinen ersten Post bearbeitet, weil es mir scheint, dass es nicht 100% klar war, wonach ich suche. – Gallanz

Verwandte Themen