在 SQL 服务器中生成一组没有反向重复的排列

Generating a set of permutations in SQL Server without reverse duplicates

Table Code:

Col1
----
A1
A2
A3
B1
B2
C1
D1
D2

(我还有其他专栏)

我正在尝试创建排除自身的所有可能组合(即 COL1:A1 COL2:A1) 排除以相反的方式再次使用它(即 A1 A2、A2、A1)...他们要在单独的列中,并且还包括其他列。我是新手,请放轻松:)

到目前为止我有:

SELECT 
    a.Col1, a.[differentcolumn],
    b.Col1, b.[differentcolumn] 
FROM 
    [dbo].code a
CROSS JOIN 
    [dbo].code b
WHERE 
    a.[col1] != b.[col1]

这差不多了,但它给了我:

A1    A2
A2    A1

我只想要一种方式(第一种)。我该怎么做?

我不是很清楚你的要求,但是你只需要这个吗?

SELECT 
    a.Col1, a.[differentcolumn],
    b.Col1, b.[differentcolumn] 
FROM 
    [dbo].code a 
       INNER JOIN [dbo].code b ON a.[col1] < b.[col1]

这将在 col1 上将 table 连接到自身,但使用 < 意味着您将看不到左侧副本具有 [=11] 的值=] 大于等于右边的副本,好像是你想要的。