title image


Smiley Re: MSSQL: Aktuelle und Vorjahresdaten (in Jahreszahlspalte)...
Prinzipiell geht das über die Kombination LEFT JOIN und UNION:

SELECT l.artikel, l.prozentsatz1, h.prozentsatz1 ...

FROM berechnung l

LEFT JOIN berechnung h ON l.artikel = h.artikel AND h.jahr = #Evaluate(DatePart("yyyy", NOW()))# )

WHERE l.jahr = #Evaluate(DatePart("yyyy", NOW())-1)# )

UNION

SELECT h.artikel, NULL, h.prozentsatz1, ...

FROM berechnung h

LEFT JOIN berechnung l ON l.artikel = h.artikel AND l.jahr = #Evaluate(DatePart("yyyy", NOW())-1)# )

WHERE

l.artikel IS NULL;



Deinen LEFT JOIN auf die Artikel musst du natürlich noch mit einbringen.



Erklärung:

Im ersten SELECT selektiere ich alle artikel des Vorjahres und joine eventuelle Sätze dieses Jahres dazu.

Im zweiten SELECT des UNION selektiere ich dann alle Artikel dieses Jahres, zu denen es keine Vorjahressätze gibt.

Trick daran ist die zusätzliche Einschränkung in der JOIN-Bedingung hinter ON. Im Gegensatz zu einer Einschränkung im WHERE wird hier eben nicht mit allen (also auch den aktuellen) Datensätzen verjoint, sondern eben nur auf die Untermenge, die durch die Einschränkung entsteht.



Gruß

Saluk



diu vive floreque.
Spockus

erreicht am 04.03.2008 09:47:23

geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: