Wir haben eine Buchhaltungsdatenbank in SQL Server implementiert. Die tatsächlichen Buchhaltungsdatensätze sind in der records
Tabelle mit dem folgenden Schema (Namen geändert, um die unschuldigen zu schützen + irrelevante Spalten entfernt).SQL Entsprechende negative und positive Datensätze finden
Einige schlechte Datensätze wurden hinzugefügt. Geschäftsregeln hinderten uns daran, die Datensätze einfach zu löschen, so dass sie für denselben Betrag mit negativen Datensätzen auf Null gesetzt werden mussten (d. H. Ein Datensatz von 4.521 $ wird mit einem Datensatz von -5.221 $ auf Null gesetzt).
Das Problem ist, dass einige der negativen Datensätze an eine falsche productId gebunden wurden.
Ich brauche eine Abfrage, die alle Datensätze mit entgegengesetzten Mengen, innerhalb der gleichen Kampagne zeigtYear, die an verschiedene productIds gebunden sind.
Die Ergebnismenge würde wie folgt aussehen:
recordId | amount | dateRecorded | campaignYear | storeId | productId
11545 | 1132.13 | '2015-05-14' | 2015 | 45 | 1729
90463 | -1132.13 | '2015-08-02' | 2015 | 45 | 2402
25487 | 9300.00 | '2011-01-13' | 2010 | 122 | 85060
67953 | -9300.00 | '2014-06-06' | 2010 | 122 | 11348
01045 | 5045.99 | '2001-11-29' | 2001 | 3 | 105
32468 | -5045.99 | '2016-08-01' | 2001 | 3 | 109
Hinweis die gleiche storeId aber unterschiedliche productId für jedes Paar von positiven/negativen Aufzeichnungen.
Ich weiß nicht wirklich, wie man das macht.
Vielen Dank im Voraus!
Ich mag Antworten besser, die Dinge erklären, d. H. Wie Sie zu einer Abfrage gelangen. (In diesem Fall: Sie suchen nach Datensätzen, für die * existiert * ein Geschwister, also verwenden Sie 'EXISTS'). Aber die Antwort ist trotzdem korrekt :-) Ich würde 'ORDER BY ABS (Betrag), campaignyear, storeid 'hinzufügen, um die Geschwister nebeneinander zu bekommen. –