Komplexe Abfragevorschlag für ERP

Ich bin Neuling zu SQL. Obwohl, ich kann grundlegende Joins schreiben, aber mein Manager hat mich gebeten, einen Bericht mit der folgenden Anforderung zu geben.

Er will alle Rechnungen finden, wo der gleiche Gegenstand vorhanden ist, aber mit verschiedenen Verpackungen ..

Aus Tabellenstruktur Standpunkt:

TBL_ITEM (Table) ITEM_ID (PK) ITEM_NAME TBL_PACKING (Table) PACKING_ID (PK) PACKING TBL_INVOICE(Table) INVOICE_ID (PK) ITEM_ID (FK) PACKING_ID (FK) 

PS: Ich habe Spalten eliminiert, die hierfür nicht benötigt werden ..

Jetzt basiert auf oben Tabellenstruktur, hier ist das Szenario.

1) Käufer A hat zwei verschiedene Artikel gekauft, aber gleiche Verpackung in einer einzigen Rechnung – Dies sollte nicht Teil der list sein, da Artikel anders ist

2) Käufer B hat ein Einzelteil zweimal mit der gleichen Verpackung in der einzelnen Rechnung gekauft – BENÖTIGEN Sie diese LISTE

3) Käufer C hat ein Stück mit zwei verschiedenen Verpackungen gekauft – BENÖTIGEN Sie diese LISTE

Bitte beachten Sie, dass das gesamte Szenario für eine Rechnung anwendbar ist, so dass die Gruppierung zuerst auf Rechnungsebene dann auf Positionsebene sein sollte … Zum Ausarbeiten:

Käufer D kaufte Artikel dreimal in drei verschiedenen Rechnung

 Invoice 1: Item A; packing 1kg Invoice 2: Item B; packing 2kg Invoice 3: Item A; packing 1kg; Item B; 2kg 

für Käufer D-Szenario, sollte es auf dem Bericht erscheinen, da jede Rechnung keine Kombination von Artikel mit gleicher oder unterschiedlicher Verpackung hat.

Ich habe versucht Gruppierung und Cursor aber es ist nicht richtig, ich denke. Ich möchte wissen, ob dies mit einer Abfrage erreicht werden kann und wenn jemand helfen kann, wäre es toll.

Ich verwende MS SQL 2005

Das ist ziemlich einfach. Sie können die list der Artikel erhalten:

 select i.invoice_id, i.item_id from tbl_invoice i group by i.invoice_id, i.item_id having min(i.packing_id) <> max(i.packing_id); 

Hier get die list der Rechnungs- / Postenpaare, die Ihre Frage erfüllen.