2

Jim次の結果でが重複するのはなぜですか?

CREATE TABLE #B (Name VARCHAR(10), Age INT)
INSERT INTO #B 
values 
('Jim', 21),
('Jim', 21),
('Jim', 19),
('Jim', 20),
('Nick', 20),
('Nick', 2),
('Nick', 20);


SELECT  DISTINCT
        Name,
        Age
FROM    #B A
WHERE   EXISTS
        (
        SELECT 1
        FROM #B B
        WHERE A.Age > B.Age
              AND A.NAME = B.NAME
        )
4

4 に答える 4

2

SQL Server 2005 以降を使用している場合、以下で説明するように CTE を使用すると、すべての人の最大年齢が得られます。

drop table #B;
CREATE TABLE #B (Name![enter image description here][1] VARCHAR(10), Age INT)
INSERT INTO #B 
values 
('Jim', 21),
('Jim', 21),
('Jim', 19),
('Jim', 20),
('Nick', 20),
('Nick', 2),
('Nick', 20);

;with cte 
as (select Name, Age, ROW_NUMBER() over (PARTITION BY Name order by Name desc) as CNT
        from #B
        )
select Name, Age
from cte
where CNT = 1

ここに画像の説明を入力 結果 :

于 2013-09-06T16:03:34.453 に答える