2017-02-16 99 views
1

我需要的最終結果:如何創建在SQL Server 2008 R2查詢

enter image description here

我用

max(value) OVER (PARTITION BY name order by value) 

但在SQL Server不支持2008 R2

在結果 第一:'a'因爲最大值和下一個記錄全部'a'
第二: 「d」,因爲第二個最高值和下一個記錄所有「d」

+1

提供樣本數據和期望的結果。另外,你到目前爲止嘗試過什麼,哪些不起作用? –

+1

「但不工作」告訴我們什麼:錯誤?意外的結果?或者是其他東西? – Richard

+0

不支持在PARTITION BY – Saber

回答

0

試試這個:

WITH cte1 AS (
    SELECT name, MAX(value) AS max_value 
    FROM yourTable 
    GROUP BY name 
), 
WITH cte2 AS (
    SELECT t.name, ROW_NUMBER() OVER (ORDER BY t.max_value DESC) rn 
    FROM cte1 t 
) 
SELECT t1.name, t1.value 
FROM yourTable t1 
INNER JOIN cte2 t2 
    ON t1.name = t2.name 
ORDER BY t2.rn, t1.value DESC 
+0

的順序不,你的代碼不是真的結果 – Saber

+0

@Saber'不是真實的結果......這個評論甚至意味着什麼?更新你的問題,清楚地顯示你想要的輸入和輸出。我的回答符合你向我們展示的圖表。 –

+0

結果第一:'a'因爲最大值和下一個記錄全部'a' 第二:'d'因爲第二最大值和下一個記錄全部'd' – Saber

0

絕對是一個奇怪的要求,但下面的代碼片段應該做你的工作 -

declare @t table(name varchar(1), value int) 
insert into @t values('a',50),('b',11),('a',10),('d',33),('f',5),('b',3) 
select name,value from @t 
select name,value from @t order by case when name='a' then 1 when name='b' then 3 when name='d' then 2 when name='f' then 4 end,value desc