0

我有一张桌子,上面有名字和年份。

Name    Year     
Adam    1960
Adam    1970
Adam    1980
Alex    1955
Alex    1956
Brian   1963
Cody    1959
....    ....

如何列出和显示名称和年份的重复项,以便显示 3 列:名称和 2 个“年份”列以产生如下结果:

     Adam 1960 1970
     Adam 1960 1980
     Adam 1970 1980
     Alex 1955 1956

Adam 有 3 个结果,因此它显示为 3 个不同的行:

然而,在 Alex(2 results) 的情况下,它只显示一行。

不重复的名称现在确实出现了。

它还需要按最左边的年份值排序,然后是最右边的年份值

另外,有没有办法在不使用“GROUP BY”的情况下做到这一点?

谢谢

4

2 回答 2

4

基本上,只需使用INNER JOIN.

SELECT  a.Name, a.Year MinYear, b.Year MaxYEar
FROM    TableName a
        INNER JOIN TableName b
            ON a.Name = b.Name AND a.Year < b.Year
于 2013-09-12T07:08:33.867 回答
0

你可以试试这个解决方案:

SELECT t1.name, t1.age, t2.age FROM dbo.Table_1 AS t1
    CROSS APPLY dbo.Table_1 AS t2 
WHERE t1.name = t2.name
    AND t1.age < t2.age    
于 2013-09-12T07:14:02.830 回答