У меня есть абсолютно непонятный случай передо мной. У меня есть две среды базы данных, A и B, где B среда была создана из резервной копии A. Я бегу довольно простой запрос:Группа по статье работает в одном окружении, но не в другом
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
Запрос возвращает список пользователей, которые имеют не- нулевой баланс по их счету. Результаты среды А выглядеть следующим образом:
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
Результаты по окружающей среде B являются следующие:
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
...
запрос отлично работает на окружающей среде А, но это выглядит, как если GROUP BY клаузулы быть полностью игнорируется в среде B.
Запрос работает должным образом, когда я комментирую Sum(invoices.Amount)
из предложения SELECT и HAVING, поэтому он определенно связан с моим полем invoices.Amount
.
Я выполнил резервное копирование A и восстановил его до B, а SqlDelta (инструмент сравнения баз данных) показывает, что базы данных идентичны, поэтому проблема не связана с данными, это проблема конфигурации, но у меня есть не знаю, где искать.
В случае его соответствующей обе среды используют SQL Server 2000 на 2003. Обе среды установлены на двух отдельных серверах, отдельных экземпляров SQL Server, а также отдельных экземпляров Windows Server в Windows Server 2003.
Что может заставить SQL-сервер не группировать поле invoices.Amount
?
Это догадка, так что приносим извинения, если я трачу ваше время; вы можете проверить настройки соединения - есть ли ansi_nulls, а другой нет? – u07ch
Действительно ли это весь запрос? Возможно, это часть большого запроса? – RBarryYoung
Какая версия SQL Server & SP? – RBarryYoung