にGROUP BYを持つ2つのテーブルを結合するための重複を避け、私はテーブルは、そのうちの一つが、そのうちの一つは、SQLサーバー上のSQL Server</p> <p>にGROUP BYを持つ2つのテーブルを結合するための重複を避けSQLサーバー
を持っていますId1, id2, id3, val1, val2
1 15 20 110 25.69
1 15 20 120 26.17
2 19 58 110 17.11
3 66 75 129 9.55
3 66 75 268 66.82
val1が複数の異なる値を持つすべての行を見つける必要があります。
予想される出力は次のようになります。
Id1, id2, id3, val1, val2
1 15 20 110 25.69
1 15 20 120 26.17
3 66 75 129 9.55
3 66 75 268 66.82
ので、同じ
Id1, id2, id3
のために、彼らは "VAL1" に複数の値を持っています。
私はこれでそれを行う方法を知っている:
Id1, id2, id3
1 15 20
は私にはない
Id1, id2, id3, val1, val2
1 15 20 110 25.69
1 15 20 120 26.17
1 15 20 110 25.69
1 15 20 120 26.17
を得るに接合することができるので、これは行が重複している可能性があり、
SELECT Id1, id2, id3, val1, val2
FROM table1 AS a
INNER JOIN
(
SELECT Id1, id2, id3
FROM table 1
GROUP BY Id1, id2, id3
HAVING COUNT(DISTINCT val1) > 1
) AS b
ON a.id1 = b.id1 and a.id2 = b.id2 and a.id3 = b.id3
しかし、浮動小数点数に "distinct"を使いたい。
クエリを改善するにはどうすればよいですか? サブクエリを使用せずに実行できますか?
2つ以上のval1の異なる値がある場合はどうなりますか? thx – user3448011
@ user3448011 。 。 3つ以上の 'val1'個以上の値がある場合、最小値と最大値は依然として異なっているので、ロジックが機能します。 –
これはmin(val1)以上(パーティションid1、id2、id3)である必要がありますか? – user3448011