2014-03-05 61 views
0

這是我的table sql server的快照。使用組子句的Sql查詢

enter image description here

我想寫一個sqlquery,這將返回只有3排,whcih包含3類不同勢最高報價。 像我的結果應該有3個不同的類別ID,以及對應於該類別的報價,提供應在該類別

是最大的,這是我所希望輸出 enter image description here

,你可以看到有3不同勢類別,並提供屬於該類別從該類別

看到

+0

什麼你到目前爲止做了什麼?並給我們一個你想要的樣本 –

+1

此外,數據和期望的輸出樣本會很好。 –

+0

什麼是「類別」? – Avt

回答

2

如果你只是想類別和最大值最大:

SELECT TOP 3 Cat_Id, MAX(Offer) FROM Products GROUP BY Cat_Id 

但是,如果你也想等領域,你必須使用一個rank function

SELECT TOP 3 * FROM 
    (SELECT ROW_NUMBER() OVER(PARTITION BY Cat_Id ORDER BY Offer DESC) AS RowNumber, 
     Cat_Id, Offer, Name, Model 
    FROM Products) AS T 
WHERE RowNumber=1 
+0

可以添加排名前3,並通過max(offer)desc – Milen

+0

訂購,這只是樣品。 我也想檢索所有的列數據。不僅cat_id&offer。 我想要Pro_id,名稱,描述e.tc. 我不能在這裏使用* –

+0

@AmitKumar在這裏。 –

0

有2種不同的方法來查詢:

select * from (
select *, dense_rank() over(order by ct desc) t from (
select *, max(Offer) over (partition by cat_id) ct from Products 
) o)o2 where t<3 

select * from Products s inner join (
select top 3 Cat_id, max(Offer) max_offer from Products 
group by Cat_id 
order by max_offer desc) o on o.Cat_id=s.Cat_id 
+0

此查詢返回表中的所有記錄 –