【发布时间】:2019-11-08 07:05:24
【问题描述】:
我有一个 SQL 表,我想生成组之间的所有组合。
组合本身不会包含在内
我的代码:
IF OBJECT_ID('tempdb..#tmp_Group_Item') IS NOT NULL
DROP TABLE #tmp_Group_Item
GO
SELECT *
INTO #tmp_Group_Item
FROM (
VALUES
(1, 1)
,(1, 2)
,(1, 3)
,(2, 1)
,(2, 2)
,(3, 1)
,(3, 2)
,(3, 3)
) AS t(GroupID, ID)
预期结果如下所示
CombinationID GroupID ID
------------- ------- --
1 1 1
1 2 1
1 3 1
2 1 1
2 2 1
2 3 2
3 1 1
3 2 1
3 3 3
4 1 2
4 2 1
4 3 1
5 1 2
5 2 1
5 3 2
6 1 2
6 2 1
6 3 3
7 1 3
7 2 1
7 3 1
8 1 3
8 2 1
8 3 2
9 1 3
9 2 1
9 3 3
...
我尝试过使用交叉和完全外部连接,但无法做到。
【问题讨论】:
-
你的意见是什么?
-
“组间的所有组合”是什么意思?
-
请向我们展示您的尝试。
-
我已经尝试过交叉连接本身 SELECT * FROM #tmp_Group_Item c1 CROSS JOIN #tmp_Group_Item c2
标签: sql sql-server tsql combinations