sqlserver 两表联合开窗函数
时间: 2023-07-22 20:05:34 浏览: 107
可以使用 SQL Server 的 `UNION` 命令来合并两个表,并在结果集上应用窗口函数。以下是一个示例查询,展示如何使用 `UNION` 命令在两个表上应用 `ROW_NUMBER()` 函数:
```sql
SELECT *
FROM (
SELECT col1, col2, ROW_NUMBER() OVER(ORDER BY col1) AS row_num
FROM table1
) t1
UNION
SELECT *
FROM (
SELECT col1, col2, ROW_NUMBER() OVER(ORDER BY col1) AS row_num
FROM table2
) t2
ORDER BY row_num
```
在此查询中,我们首先在 `table1` 上应用 `ROW_NUMBER()` 函数,并使用 `UNION` 命令将其与 `table2` 上的结果集合并。然后,我们使用 `ORDER BY` 子句按 `row_num` 排序返回结果集。
请注意,两个子查询的列必须匹配,否则将出现错误。例如,如果 `table1` 有三列,而 `table2` 只有两列,则必须在 `table2` 的子查询中选择一个虚拟列,以便与 `table1` 的子查询匹配。
阅读全文