![](/img/trans.png)
[英]Oracle 10g aggregating from two different rows and columns into a single row
[英]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.