0

名前と年が書かれたテーブルがあります。

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

名前と年の重複を一覧表示して表示し、名前と 2 つの「年」列の 3 つの列を表示して、次のような結果を生成するにはどうすればよいですか。

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

Adam には 3 つの結果があるため、3 つの異なる行として表示されます。

ただし、Alex(2 件の結果) の場合、1 行しか表示されません。

重複していない名前が表示されるようになりました。

また、左端の年の値でソートし、次に右端の年の値でソートする必要があります

また、「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 に答える