在SQL Server中生成一组排列而不反向重复

时间:2015-11-03 10:58:00

标签: sql sql-server cross-join

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

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

1 个答案:

答案 0 :(得分:2)

我对你的要求并不完全清楚,但你真的需要这个吗?

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

这会将表格加到col1上,但使用<表示您无法看到左侧副本的col1大于{{1}}的值或等于右手副本,这似乎是你想要的。