簡體   English   中英

Oracle 10g-根據某些列的最大值返回單行

[英]Oracle 10g - Return Single Row Based On Max Value of some Columns

我的表有很多列和很多重復的行

主鍵由C1,C2,Year,C3,C5列組成,而我只想基於較高的Date,C6和C4列(每個順序)僅保留每個重復行的一行。

例如:基於4列(我們的主鍵)獲取最后2行,我們只需要保留其中的一行,就可以做到這一點:首先比較具有最高Date列的行(它們具有相同的日期)日期),那么我們必須移至第二列(C6),並且它們具有相同的值= 0,最后我們比較C4列,然后取較高的值(= 1)。

對於此示例,我們必須選擇最后一行並刪除另一行。

C1  C2  Year      C3   C4  C5  C6     Date
------------------------------------------------------------------
100 74  2013    2697    0   1   0   11/06/2013
100 74  2013    2697    1   1   0   11/06/2013
100 74  2013    2697    0   1   1   12/06/2013
100 74  2013    2707        1   0   11/06/2013
100 74  2013    2707        2   0   11/06/2013
100 74  2013    2707        3   0   11/06/2013
100 74  2013    2708    0   1   0   11/06/2013
100 74  2013    2708    1   1   0   11/06/2013
100 74  2013    2708    1   1   1   25/06/2013
100 74  2013    2708    0   1   1   30/06/2013
100 74  2013    3211    0   1   0   28/07/2013
100 74  2013    3211    1   1   0   28/07/2013

謝謝

大概的概念:

SELECT 
  DENSE_RANK() OVER (PARTITION BY c1, c2, year, c3, c5 ORDER BY date, c6, c4) 
FROM table

您可能希望將其包裝在另一個SELECT中以剪切重復項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM