1
thisと同様の状況に陥りました。 私はさまざまなタイプのデータを持つ複数のカラムを持っていますが、すべてのカラムを選択したいのですが、グループではグループで1カラムしかありません。OracleグループのみONE列 - 更新
マイ表:ソリューションを読んだ後
+--------+----------+----------+-------+-----------------------+
| id | b_group | col2 | col3 | col4 |
+--------+----------+----------+-------+-----------------------+
| 1 | 1 | abcd | 100 | www.google.com |
| 2 | 1 | xyz | 200 | www.yahoo.com |
| 3 | 2 | dfs | 200 | www.stackoverflow.com |
| 4 | 3 | asda3 | 78 | www.imdb.com |
| 5 | 4 | zsdvf4 | 65 | www.youtube.com |
| 6 | 5 | sdf4 | 101 | www.ymail.com |
| 7 | 5 | ssdfsd | 200 | www.gmail.com |
| 8 | 1 | zxcgdf4 | 200 | www.club.com |
| 9 | 6 | yujhgj | 202 | www.thunderbird.com |
+--------+----------+----------+-------+-----------------------+
は、私が理解することは、私のクエリは同様であるので、集計関数を使用することで、thereを提供:
select MIN(b_group),id,col2,col3,col4 from myTable where col3='200' group by id,col2,col3,col4;
しかし、これは私の場合には動作しませんcol3 = 200のすべてのレコードを与えています。
マイ所望の出力:
+--------+----------+----------+-------+-----------------------+
| id | b_group | col2 | col3 | col4 |
+--------+----------+----------+-------+-----------------------+
| 2 | 1 | xyz | 200 | www.yahoo.com |
| 3 | 2 | dfs | 200 | www.stackoverflow.com |
| 6 | 5 | sdf4 | 200 | www.ymail.com |
+--------+----------+----------+-------+-----------------------+
私が選んされたレコードを気にしない、順序は重要ではありません。 グループのある列を1つだけ選択するだけです。
おかげで多くのことを、 :代わりに、
b_group
あたり数行にrow_number
ウィンドウ関数を使用することができ、その後、最初に各グループのちょうど(任意)を選択します* ORA-30485:ORDER BY式がありません。** これで、 'ROW_NUMBER()OVER(PARTITION BY b_group ORDER BY b_group)'を使用しました。 –@niceguy私は 'row_number' **が' order by'節を必要としていることを忘れています、ありがとう! 'order by b_group'は意味がないことに注意してください。なぜなら、同じパーティション内のすべての行は、とにかく同じ' b_group'を持つからです。間違っているわけではありませんが、将来の読者には少し混乱するかもしれません。そのような場合、私は 'order by 1'のようなものでそれを捨てることを好みます。 – Mureinik