[英]SQL Query To Get Multiple Max Values From Multiple Columns
我試圖弄清楚如何從多列中提取多個最大值。 以下是一些示例數據:
DATE | A | B | C
4/4/2011 | 64.4 | 62.1 | 33.3
4/5/2011 | 34.6 | 33.5 | 32.3
4/6/2011 | 33.1 | 49.4 | 32.1
4/7/2011 | 55.2 | 32.8 | 33.5
4/8/2011 | 31.2 | 50.1 | 30.4
4/9/2011 | 31.7 | 31.1 | 30.4
我想要前5名:
4/4/2011 | 64.4
4/4/2011 | 62.1
4/7/2011 | 55.2
4/8/2011 | 50.1
4/6/2011 | 49.4
謝謝
怎么樣:
SELECT TOP 5 Date, Val
FROM (SELECT Date, A as Val FROM T
UNION ALL
SELECT Date, B FROM T
UNION ALL
SELECT DATE, C FROM T
) AS x
ORDER BY x.Val DESC
您可以使用UNPIVOT然后按列值排序,然后只選擇前5名。
像這樣......
CREATE TABLE #Data
(
[Date] DATE,
A FLOAT,
B FLOAT,
C FLOAT
)
INSERT INTO
#Data
SELECT '4/4/2011' AS Date, '64.4' AS A, '62.1' AS B, '33.3' AS C
UNION SELECT '4/5/2011' AS Date, '34.6' AS A, '33.5' AS B, '32.3' AS C
UNION SELECT '4/6/2011' AS Date, '33.1' AS A, '49.4' AS B, '32.1' AS C
UNION SELECT '4/7/2011' AS Date, '55.2' AS A, '32.8' AS B, '33.5' AS C
UNION SELECT '4/8/2011' AS Date, '31.2' AS A, '50.1' AS B, '30.4' AS C
UNION SELECT '4/9/2011' AS Date, '31.7' AS A, '31.1' AS B, '30.4' AS C
SELECT * FROM #Data
SELECT TOP 5
[Date],
[Type],
[Value]
FROM
(
SELECT
[Date],
[A],
[B],
[C]
FROM
#Data
)pvt
UNPIVOT
(
[Value] FOR [Type] IN
( [A],[B],[C])
)AS unpvt
ORDER BY
[Value] DESC
DROP TABLE #Data
你沒有告訴我們的一件事是你想要獨特的結果還是允許重復。
GilM的答案將允許重復,因為他使用UNION ALL。
UNION將返回獨特的結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.