私はまったく困惑しています。グループバイダル句は1つの環境で動作しますが、別の環境では動作しません。
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
クエリが非を持っているユーザーのリストを返します。私は環境Bは、私はむしろ単純なクエリを実行しているA.のバックアップから作成された2つのデータベース環境では、AとBを、持っています請求書の残高ゼロ。環境Aからの結果は、次の似ている次のように環境Bの
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
結果は以下のとおりです。
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
...
クエリは、環境Aに正常に動作しますが、GROUP BY句が中であるかのように見えます
SELECTとHAVING句からSum(invoices.Amount)
をコメントアウトすると、クエリは正常に機能します。したがって、そのクエリは確実にinvoices.Amount
フィールドに接続されています。
私はAをバックアップしてBに復元しました.SqlDelta(データベースの差分ツール)は、データベースが同一であることを示しています。データの問題ではなく、設定上の問題です。どこを見るか分かりません。場合
その関連、両方の環境では、両方の環境は二つの別々のサーバ、SQL Serverの別々のインスタンス、およびWindows Server 2003
の別々のインスタンスにインストールされているWindows Server 2003でSQL Server 2000を使用していますSQLサーバーがinvoices.Amount
フィールドをグループ化しない原因となるのは何ですか?
私はあなたの時間を無駄にしていると思うので、これは推測です。接続設定を確認できますか?ansi_nullsはオンになっていますか? – u07ch
これは本当に全体のクエリですか?それはおそらく大きなクエリの一部ですか? – RBarryYoung
SQL ServerとSPのどのバージョンですか? – RBarryYoung