在UNION之后创建列组列



我正试图根据列SalesAmount中的数量创建一个SalesRank列。

我正在尝试做类似的事情:RANK() OVER(Order BY SalesAmount desc) as StateRank,但我不确定在将两个表连接在一起后如何执行它?如何在两个表的并集之后创建另一列?为了做到这一点,我需要将我的并集选择插入到#temptable中吗?

以下是我的表格示例:

ReportId251213201>1293114
StateId ReportTitle销售额
1 加利福尼亚州的在线销售 21
12 纽约在线销售 37
14 密歇根州的在线销售 919212
23 内华达州的在线销售 14
8 宾夕法尼亚州的在线销售 14 223413
13 俄勒冈州的在线销售9651

您就快到了。

SELECT  *
,RANK() OVER (ORDER BY SalesAmount DESC) AS RowRank
FROM    (
SELECT  *
FROM    TableOne
UNION ALL
SELECT  *
FROM    TableTwo
) AS t;

或者您可以使用Common Table Expression(在这种情况下,这只是编写子查询的一种更简洁/不同的方式,但在其他情况下确实提供了更多好处(。

WITH cte AS (
SELECT *
FROM TableOne
UNION ALL
SELECT *
FROM TableTwo
)
SELECT *
, RANK() OVER (ORDER BY SalesAmount DESC) AS RowRank
FROM cte;

相关内容

  • 没有找到相关文章

最新更新