Ich habe eine absolut verwirrende Fall vor mir. Ich habe zwei Datenbankumgebungen, A und B, in denen Umwelt B hat aus einer Sicherung von A. erstellt Ich bin eine ziemlich einfache Abfrage ausgeführt wird:Group by Clause Arbeit in einer Umgebung, aber nicht eine andere
SELECT
customers.customerName (* varchar(100), not null *)
,countries.countryName (* varchar(100), not null *)
,Balance = Sum(invoices.Amount) (* money, not null *)
FROM invoices
INNER JOIN customers
ON customers.customerID = invoices.customerID
INNER JOIN countries
ON countries.countryID = customers.countryID
GROUP BY
customers.customerName
,countries.countryName
HAVING
Sum(invoices.Amount) <> 0
ORDER BY
customers.customerName
Die Abfrage gibt eine Liste von Benutzern, die eine nicht haben Nullsaldo auf ihrer Rechnung. Die Ergebnisse aus der Umgebung A wie folgt aussehen:
customerName countryName Balance
------------ ----------- -------
A United States 20.0000
B United States -5.0000
C Canada 199.9900
D Canada -0.0100
E United States 55.5900
Die Ergebnisse auf Umwelt B sind wie folgt:
customerName countryName Balance
------------ ----------- -------
A United States 10.0000
A United States -5.0000
A United States -1.0000
A United States 17.0000
A United States -1.0000
B United States -1.0000
B United States -4.0000
C Canada 100.9900
C Canada 99.9900
...
Abfrage über Umwelt A funktioniert gut, aber es sieht aus, als ob die GROUP BY-Klausel wird wird in Umgebung B ignoriert.
Die Abfrage funktioniert wie erwartet, wenn ich aus der SELECT- und HAVING-Klausel Sum(invoices.Amount)
auskommentiere, so dass sie definitiv mit meinem Feld invoices.Amount
verbunden ist.
Ich habe A gesichert und es auf B wiederhergestellt, und SqlDelta (ein Diff-Tool für Datenbanken) zeigt, dass Datenbanken identisch sind, also ist es kein Datenproblem, es muss ein Konfigurationsproblem sein - aber ich habe keine Ahnung, wo man hinschauen sollte.
Bei seiner relevant, beide Umgebungen mithilfe von SQL Server 2000 auf einem Windows Server 2003. Beide Umgebungen auf zwei separaten Servern, separate Instanzen von SQL Server und separate Instanzen von Windows Server 2003
installiert sind Was könnte dazu führen, dass SQL Server das Feld invoices.Amount
nicht gruppiert?
Dies ist eine Vermutung, also appologize, wenn ich Ihre Zeit verschwende; kannst du die verbindungseinstellungen überprüfen - hat einer ansi_nulls an und der andere nicht? – u07ch
Ist das wirklich die ganze Frage? Ist es möglicherweise Teil einer größeren Abfrage? – RBarryYoung
Welche Version von SQL Server & SP? – RBarryYoung