【发布时间】:2021-06-07 16:36:22
【问题描述】:
我正在尝试选择两个具有相同列的表并将它们组合成 1,这将使列 SalesAmount 从最高到最低排列。我试图通过使用UNION ALL 来做到这一点,但目前,返回的选择正在分别对它们进行排名。
TableTwo 的 ReportId 值与 TableOne 中的值不同。
这是从TableOne 语句返回的选择示例:
| StateId | ReportTitle | ReportId | SalesAmount | SalesRank |
|---|---|---|---|---|
| 1 | Online Sales in California | 21 | 22 | 1 |
| 12 | Online Sales in New York | 21 | 13 | 2 |
| 23 | Online Sales in Nevada | 21 | 9 | 4 |
这是一个从 TableTwo 返回的 select 示例,它只有 1 个值:
| StateId | ReportTitle | ReportId | SalesAmount | SalesRank |
|---|---|---|---|---|
| 14 | Online Sales in Michigan | 91 | 11 | 3 |
我现在正在尝试合并这两个表并相应地对它们进行排名。使用 UNION ALL 时返回的内容如下:
| StateId | ReportTitle | ReportId | SalesAmount | SalesRank |
|---|---|---|---|---|
| 1 | Online Sales in California | 21 | 22 | 1 |
| 12 | Online Sales in New York | 37 | 13 | 2 |
| 23 | Online Sales in Nevada | 14 | 9 | 4 |
| 14 | Online Sales in Michigan | 91 | 11 | 3 |
Michigan 行排名第 3。它将两个表都选择到 1 个语句中,但没有像我尝试的那样对它们进行排名。我怎样才能做到这一点?我的预期结果是两个表都按SalesRank 适当排序
这是我预期结果的示例:
| StateId | ReportTitle | ReportId | SalesAmount | SalesRank |
|---|---|---|---|---|
| 1 | Online Sales in California | 21 | 22 | 1 |
| 12 | Online Sales in New York | 37 | 13 | 2 |
| 14 | Online Sales in Michigan | 91 | 11 | 3 |
| 23 | Online Sales in Nevada | 14 | 9 | 4 |
这是一个查询示例:
CREATE TABLE TableOne
(
StateId INT,
ReportTitle VARCHAR(100),
ReportId INT,
SalesAmount Money,
SalesRank INT
)
INSERT INTO TableOne (StateId,ReportTitle,ReportId,SalesAmount, SalesRank)
VALUES (1,'Online Sales in California',21, 22, 1),(12,'Online Sales in New York ',21, 13, 1), (1,'Online Sales in Nevada',21, 9, 4)
CREATE TABLE TableTwo
(
StateId INT,
ReportTitle VARCHAR(100),
ReportId INT,
SalesAmount Money,
SalesRank INT
)
INSERT INTO TableOne (StateId,ReportTitle,ReportId,SalesAmount, SalesRank)
VALUES (14,'Online Sales in Michigan',91, 11, 3)
SELECT * FROM TableOne
UNION ALL
SELECT * FROM TableTwo
【问题讨论】:
-
您的第二次插入是 TableOne - 可能应该是 TableTwo。并且您已将 SalesRank 1 两次插入 TableOne。
-
对于一个结构良好的问题加一个 - 即使它是微不足道的:)
-
请澄清您的问题,因为预期的
ReportId值与上面的示例数据不匹配。
标签: sql sql-server tsql