2016-07-13 33 views
0

我有SQL語句:有幾個參數選擇來自行最小值

select col1,col2,col3,col4,col5 from table1 
group by col1,col2,col3,col4 

產生見下表:

enter image description here

我想只顯示行,與最小的值相同的參數。 結果應該是如下:

enter image description here

怎麼寫呢?

UPDATE:年,月 enter image description here

+0

'col1 by col1,col2,col3,col4'每個col1,col2,col3,col4'只產生一個*行。你怎麼得到上述結果? –

+0

對不起,我的錯誤,沒有組 – 4est

+0

我認爲你可以使用HAVING 有點像HAVING Col5 = MIN(Col5) – AntDC

回答

1

請在下面嘗試。

SELECT Year 
     ,Month 
     ,COL1 
     ,COL2 
     ,COL3 
     ,COL4 
     ,COL5 
FROM 
    (SELECT Year 
      ,Month 
      ,COL1 
      ,COL2 
      ,COL3 
      ,COL4 
      ,COL5 
      ,ROW_NUMBER() OVER(PARTITION BY COL4 ORDER BY COL5) AS RN 
    FROM table1) AS X 
WHERE X.RN = 1 
+0

如果需要還按col分組:年,月? – 4est

+0

請使用年份和月份顯示一些示例數據 – balaji

+0

剛更新的問題:我thnik我需要添加到row_number:col4,year,month,但林不知道... – 4est

0

使用MIN()與OVER子句與最小值的所有行的集合:

SELECT 
    col1, 
    col2, 
    col3, 
    col4, 
    col5, 
    min(col5) OVER (PARTITION BY col1, col2, col3, col4) AS min_for_columns_set 
FROM table1 

UPD: 爲組設置爲僅最小值:

SELECT 
    col1, 
    col2, 
    col3, 
    col4, 
    min(col5) as min_value 
FROM table1 
group BY col1, col2, col3, col4 
+0

這將返回表的所有行... –

+0

@ZoharPeled的確。添加明顯的變量與GROUP BY字段設置 –

+0

你的第二個查詢仍然會返回表的所有行,但現在你會再次得到col5與標題min_value ... –

1

除非我錯過了一些明顯的東西,它應該是簡單的t他的:

select col1, col2, col3, col4, min(col5) 
from table1 
group by col1, col2, col3, col4