2013年5月6日 星期一

Oracle, SQL 以多個欄位為 Key, 取出 table 中另一欄位為 max 之資料


table_1 資料表如下圖:

如上資料表中,此資料表中並沒有設定 Primary Key欄位,但可由 column_1column_2column_3column_4column_5column_6 的組合當成 Key 值,但仍有可能有重覆之資料,如表中所示,column_4 = 8 , 9 , 10 的資料都有多筆,但取資料時又希望依據相同的數據,將這些重覆的過濾掉只留下 check_column 數字最大的那筆時,可利用下面的SQL完成。

select *
from table_1
where (column_1, column_2, column_3, column_4, column_5, column_6, check_column)
in (
      select
          column_1,
          column_2,
          column_3,
          column_4,
          column_5,
          column_6,
          max(check_column)
       from table_1
       group by
          column_1,
          column_2,
          column_3,
          column_4,
          column_5,
          column_6
   )

結果如下圖:

沒有留言:

張貼留言