Hier ist meine Frage: Wie kann ich die Integrität der Datensätze mithilfe von Aggregatfunktionen mit einer Gruppe beibehalten?SQL Server: Wie kann ich die Datenintegrität mithilfe von Aggregatfunktionen mit Gruppen verwalten?
Um weiter zu erklären, hier ein Beispiel.
Ich habe eine Tabelle mit den folgenden Spalten: (Denken Sie daran, als „Ordnung“ Tabelle)
Customer_Summary (first 10 char of name + first 10 char of address)
Customer_Name
Customer_Address
Customer_Postal Code
Order_weekday
Es gibt eine Zeile pro „Ordnung“, so viele Zeilen mit demselben Kundennamen, Adresse und Zusammenfassung.
Ich möchte den Namen, die Adresse und die Postleitzahl des Kunden sowie die Anzahl der Bestellungen, die er an jedem Wochentag aufgegeben hat, in der Zusammenfassung des Kunden anzeigen.
die Daten sollten also wie folgt aussehen:
Summary | Name | Address | PCode | Monday | Tuesday | Wednesday | Thursday | Friday
test custntest addre|test custname|test address|123456 | 1 | 1 | 1 | 1 | 1
Ich will nur Gruppen Aufzeichnungen ähnlichen Kunden Zusammenfassung zusammen, aber natürlich möchte ich einen Namen, Adresse und Postleitzahl zu zeigen. Ich verwende min() im Moment, so meine Frage wie folgt aussieht:
ich meine Wochentag Logik weggelassen habe, da ich nicht glaube, es war notwendig.
Mein Problem ist dies - einige dieser Kunden mit der gleichen Kundenzusammenfassung haben unterschiedliche Adressen und Postleitzahlen. So
ich zwei Kunden haben könnte, die aussehen wie:
test custntest addre|test custname |test address |323456|
test custntest addre|test custname2|test address2|123456|
die Gruppe unter Verwendung von, meine Abfrage kehrt das folgende:
test custntest addre|test custname |test address |123456|
Da ich min bin mit, es wird geben Sie mir den Mindestwert für alle Felder, aber nicht unbedingt aus dem gleichen Datensatz. Ich habe also meine Integrität verloren - die Adresse und der Name, die von der Abfrage zurückgegeben wurden, stimmen nicht mit der Postleitzahl überein.
Wie kann ich die Datenintegrität für nicht gruppierte Felder beibehalten, wenn ich eine group by-Klausel verwende?
Hoffentlich habe ich es klar genug erklärt, und danke im Voraus für die Hilfe.
BEARBEITEN: Gelöst. Danke allen!
So würden Sie aggregieren mögen, aber was würden Sie tun, wenn ein Kunde mehr als eine Adresse hatte? Können Sie ein Beispiel für die Ergebnismenge geben, mit der Sie enden möchten? – Arne
Die Kundendaten sollten in ihrer ** eigenen Tabelle sein ** - wenn du sie ständig in der "Bestellungen" Tabelle duplizierst, wirst du niemals in der Lage sein, Datenintegrität/Datenqualität zu garantieren ..... –
habe ich zur Verfügung gestellt Ein Beispiel da oben - nur was die Adresse betrifft ist wichtig, dass sie mit dem Namen und der Postleitzahl übereinstimmen muss. Ich benutzte min, weil es am einfachsten war, aber wie ich oben gezeigt habe, verliere ich die Aufzeichnungsintegrität auf diese Weise. @marc: Das merke ich; Leider wurde mir diese DB-Struktur gegeben und ich kann sie nicht ändern. Mir ist klar, dass ich vielleicht die sprichwörtliche Kugel zu diesem Thema anbeißen muss, aber ich hoffe, dass es eine Lösung gibt, an die ich nicht gedacht habe ... – Mansfield