2015-11-03 21 views
3

Code生成一組在沒有反向的SQL Server排列的重複

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 

我只希望它的一種方式(第一個)。我該怎麼做呢?

回答

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這似乎是你想要的。

+0

謝謝,這樣做,我不知道你可以在非數字字段上使用'<'。 – MM92

+1

@ MM92是的,只是做一個字母比較(好吧,我說「只是」;確切的結果取決於[整理](https://technet.microsoft.com/en-us/library/aa174903%28v=sql .80%29.aspx?f = 255&MSPPError = -2147217396),這在某些情況下可能很重要,例如「e」和「é」是否相同,但在這種情況下,這並不重要:)) –