【发布时间】:2022-01-20 16:28:51
【问题描述】:
我尝试这样写查询:
WITH
[order_statements]
AS
(
SELECT
*
FROM
(
VALUES
(1, 1),
(2, 1),
(3, NULL),
(4, 1),
(4, 2)
)
AS [t1]
(
[OrderId],
[OrderStatementId]
)
),
[statments]
AS
(
SELECT
*
FROM
(
VALUES
(1),
(2)
)
AS [t1]
(
[StatementId]
)
)
SELECT
[t2].[OrderId],
[t1].[StatementId],
[t2].[OrderStatementId]
FROM
[statments] AS [t1]
CROSS JOIN
[order_statements] AS [t2]
ORDER BY
[t2].[OrderId],
[t1].[StatementId]
我想要的结果:
| OrderId | StatementId | OrderStatementId |
| 1 | 1 | 1 |
| 1 | 2 | NULL |
| 2 | 1 | 1 |
| 2 | 2 | NULL |
| 3 | 1 | NULL |
| 3 | 2 | NULL |
| 4 | 1 | 1 |
| 4 | 2 | 2 |
有什么想法吗?在 [order_statements] 我有 [OrderStatementId] 时,我可以调整行。如果我没有在 [OrderStatementId] 我设置 NULL。最好的解决方案是当我只有一个人可以访问表格时。请帮忙。
【问题讨论】:
标签: sql join cross-join