Sql列表显示重复

时间:2013-09-12 07:04:46

标签: sql

我有一张名字和年份的表。

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

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

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

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

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

现在出现非重复的名称。

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

排序

另外,有没有办法在不使用“GROUP BY”的情况下执行此操作?

由于

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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