SQL自连接消除重复值

SQL自连接消除重复值,sql,sql-server,reporting-services,ssrs-2012,Sql,Sql Server,Reporting Services,Ssrs 2012,我必须选择不同的月份ID。下面的查询返回重复的值。如何解决这个问题 SELECT DISTINCT m1.ID as C1, m2.ID as C2 FROM Mois m1, Mois m2 WHERE m1.ID IN('1','4','9') AND m2.ID IN('2','5','10') 这就是我想要的: C1 | C2 1 | 2 4 | 5 9 | 10 输出 C1 C2 1 2 4 5 9 10 演示 尝试此选项:

我必须选择不同的月份ID。下面的查询返回重复的值。如何解决这个问题

 SELECT DISTINCT m1.ID as C1, m2.ID as C2
    FROM Mois m1, Mois m2
    WHERE m1.ID IN('1','4','9')
    AND m2.ID IN('2','5','10')
这就是我想要的:

C1 | C2
1 | 2
4 | 5
9 | 10
输出

C1  C2
1   2
4   5
9   10
演示

尝试此选项:

WITH cte1 AS (
    SELECT DISTINCT m1.ID as C1, m2.ID as C2
    FROM Mois m1
    INNER JOIN Mois m2
    ON m1.ID IN (1, 4, 9) AND
       m2.ID IN (2, 5, 10) AND
       m1.ID < m2.ID
),
cte2 AS (
    SELECT C1, C2, ROW_NUMBER() OVER (PARTITION BY C1 ORDER BY C2) rn
    FROM cte1
)

SELECT C1, C2
FROM cte2
WHERE rn = 1
ORDER BY C1;

C1   C2
1   1   2
2   4   5
3   9   10

您期望的输出和示例数据是什么。没有重复项,至少两个ID列都没有。您的预期输出是什么?您需要有一种方法来聚合这些重复项c1=1,c2=2与c1=1不同,c2=3如何为c1值选择c2值?@TimBiegeleisen我希望每个列都包含不同的值这是一个很好的查询!非常感谢。这取决于你对“更好”一词的定义:-
C1  C2
1   2
4   5
9   10
WITH cte1 AS (
    SELECT DISTINCT m1.ID as C1, m2.ID as C2
    FROM Mois m1
    INNER JOIN Mois m2
    ON m1.ID IN (1, 4, 9) AND
       m2.ID IN (2, 5, 10) AND
       m1.ID < m2.ID
),
cte2 AS (
    SELECT C1, C2, ROW_NUMBER() OVER (PARTITION BY C1 ORDER BY C2) rn
    FROM cte1
)

SELECT C1, C2
FROM cte2
WHERE rn = 1
ORDER BY C1;

C1   C2
1   1   2
2   4   5
3   9   10