2015-10-30 115 views
0

我正在處理一個查詢並陷入了這種情況。如何根據SQL中三列的組合選擇最大值

我有一個簡單的數據在這裏

Name Main_Model Sub_Model  Sub_Sub_Model 
=============================================== 
Ver1 1    0    0 
ver2 1    0    0 
ver1 1    2    0 
ver2 1    1    0 
ver1 2    0    0 
ver2 1    1    1 
ver1 2    2    1 

這個數據我有選擇的最大型號。因此,例如

爲第1版即VER1最大型號爲

Name Main_Model Sub_Model  Sub_Sub_Model 
=============================================== 
Ver1 2   2    1 

2版本,它會

Name Main_Model Sub_Model  Sub_Sub_Model 
=============================================== 
Ver2 1   1    1 

我已經試過內部連接,但沒有運氣。我真的很迷惑它的邏輯。 請指導,以便我可以完成此任務。

謝謝

+0

什麼,當你有這樣的數據' Ver2 1 20 20'? – lad2025

+1

那個時候ver2 1 20 20將是最大模型,如果Model_sub具有最高20作爲值 – Rebecca

回答

0

等級行與窗函數,並得到行列它是1:

;with cte as(select *, row_number() over(partition by name 
             order by main_model desc, 
                sub_model desc, 
                sub_sub_model desc) rn 
      from table) 
select * from cte 
where rn = 1 
+0

我試過了,但它沒有給我1行最大model_number :( – Rebecca

+0

詳細說明它給出的結果並展示它應該給出的結果。你如何計算3列的最大值... –

+0

對不起...是我的壞..我工作得很好...非常感謝你 – Rebecca

0

使用ROW_NUMBER排名每一行:

;WITH cte AS 
    (
     SELECT  Name, Main_Model, Sub_Model, Sub_Sub_Model 
        rn = ROW_NUMBER() OVER (PARTITION BY Name ORDER BY Main_Model DESC, Sub_Model DESC, Sub_Sub_Model DESC) 
     FROM  my_table 
    ) 

SELECT * 
FROM cte 
WHERE rn = 1 
+0

你的是和上面一樣的,它對我很有幫助。很多爲你提供幫助,我真的很感激。 – Rebecca

相關問題