0

使用:SQL Server 2008 R2

合計のパーセントを計算する際に、2つの異なるテーブルで集計クエリ(SUM)を実行するときに問題が発生しました。個別に、それは正しい量を生成します。クエリに両方が含まれていると、大きな値が出て、どこから来たのかわかりません。コードに加えて、2番目のテーブルを生成するために実行しているコード。

SELECT TOP 100 Field
INTO TableTwo
FROM TableOne

SELECT SUM(t1.Field), SUM(t2.Field)
FROM TableOne t1, TableTwo t2

TableTwoTableOne(上記のクエリの最初の部分で確認できる)の10パーセントから派生しています。個別に、これらは正しい値を生成することに注意してください。

SELECT SUM(t1.Field)
FROM TableOne t1

SELECT SUM(t2.Field)
FROM TableTwo t2

SQL Serverは上記の集計クエリですか、それともここで明らかな何かが欠けていますか?

4

2 に答える 2

3
FROM TableOne t1, TableTwo t2

クロスジョインです。 t1のすべてのレコードがt2のすべてのレコードと結合され、予想されるレコードの10倍のネットが作成されます(t1にt2レコードの10%がある場合)。

于 2013-03-27T00:25:19.400 に答える
1

FROM TableOne t1, TableTwo t2クロスジョインです; table1とtable2の行のすべての組み合わせに対して行を取得しているため、SUMが非常に高くなっています。

これらのクエリは個別に実行する必要があります。同じ結果セットにそれらを含める場合は、サブクエリを使用できます。

select (
   SELECT SUM(t1.Field)
   FROM TableOne t1
) [t1sum], 
(
   SELECT SUM(t2.Field)
   FROM TableTwo t2
) [t2sum]
于 2013-03-27T00:26:47.477 に答える