【发布时间】:2021-11-28 20:19:44
【问题描述】:
有没有办法按列显示前 5 和后 5 以及顺序?
我有 2 个查询如下所示:
SELECT *
FROM
(SELECT DISTINCT TOP(5)
OG.GAMES AS 'Olympic Games', OC.CITY AS 'Hosting City',
OG.Expenses_Mil AS 'Financial Expenses (in multiples of 1M$)'
FROM
[Olympics].[Events_Facts] AS OEF
JOIN
[Olympics].[Games] AS OG ON OEF.GAMES_ID = OG.GAMES_ID
JOIN
[Olympics].[Cities] AS OC ON OEF.CITY_ID = OC.CITY_ID
ORDER BY
OG.Expenses_Mil DESC) A
UNION ALL
SELECT *
FROM
(SELECT DISTINCT TOP(5)
OG.GAMES AS 'Olympic Games', OC.CITY AS 'Hosting City',
OG.Expenses_Mil AS 'Financial Expenses (in multiples of 1M$)'
FROM
[Olympics].[Events_Facts] AS OEF
JOIN
[Olympics].[Games] AS OG ON OEF.GAMES_ID = OG.GAMES_ID
JOIN
[Olympics].[Cities] AS OC ON OEF.CITY_ID = OC.CITY_ID
ORDER BY
OG.Expenses_Mil) B
我希望最终输出以DESC 的顺序对费用列进行排序,但我无法对嵌套列进行操作。
输出是:
2016 Summer Rio de Janeiro 10
2014 Winter Sochi 8.2
2012 Summer London 8
2002 Winter Salt Lake City 7
2004 Summer Athina 7
1900 Summer Paris 1
1904 Summer St. Louis 1
1906 Summer Athina 1
1912 Summer Stockholm 1.3
1920 Summer Antwerpen 1.4
而所需的输出应根据最后一列按 DESC 顺序排列
【问题讨论】:
-
请提供minimal reproducible example 示例数据和所需结果。
-
你的意思是显示每一行的rank?
-
在上面的查询中,我想在显示前 5 个值(og.expenses)和后 5 个值的查询之间进行联合。然后用 DESC order 对最后的费用列进行排序
-
Events_Facts如何进入此查询,您没有选择任何列?表之间的关系是什么,为什么需要DISTINCT,你是否得到重复的行?也许你应该重新考虑你的加入 -
Events_Facts是其他表之间的连接表。和DISTINCT是为了摆脱重复。
标签: sql sql-server tsql