制定查询

时间:2015-03-26 15:26:18

标签: sql sql-server

我有一张'TempC3'表

Itemset      itemset2
       1            3
       2            3
       2            5
       3            5 

我想要在这些列中组合元素而不重复。所以输出表应该是

Itemset    itemset2     Itemset3
  1               3            5
  2               3            5
  1               2            3

我设计了一个查询,但它不会返回所需输出表的最后一行 -

Select distinct a.Itemset, 
    a. Itemset2, 
    c.itemset2 
from TempC3 a 
    Join TempC3 c 
        ON c.Itemset2 > a.Itemset2 

此查询仅产生以下结果:

Itemset       itemset2     Itemset3
      1              3            5
      2              3            5

1 个答案:

答案 0 :(得分:1)

由于您需要项集的所有组合,因此必须先将输入表中的两列连接成一列。你可以这样做,例如,使用CTE:

Fiddle Here

WITH CTE AS (
    SELECT Itemset FROM TempC3
    UNION
    SELECT Itemset2 FROM TempC3
)
SELECT I1.Itemset, I2.Itemset, I3.Itemset FROM CTE AS I1
INNER JOIN CTE AS I2 ON I2.Itemset > I1.Itemset
INNER JOIN CTE AS I3 ON I3.Itemset > I2.Itemset