簡體   English   中英

如何在sql server 2008 r2中創建查詢

[英]How do I create query in sql server 2008 r2

我需要最終結果:

在此輸入圖像描述

我用了

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

但是在sql server 2008 r2中不支持

結果首先:'a'因為最大值而下一個記錄都是'a'
第二個:'d'因為第二個最大值而下一個記錄都是'd'

嘗試這個:

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

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM