2016-09-05 6 views
-3

を私はこのようなテーブルを持っている:従業員の給与の間differrenceを検索し、並べ替え最高最低に

NAME   SALARY 
Gareth   37451000.7 
Lorah   2426222.55 
Sage   2910000.98 

私は最高に最低の違いによってソートされた、各従業員の給与の違いを見つけたいですか?このように...

NAME   name   salary diff 
Sage   Lorah   483778.43 
Sage   Gareth   -34540999.72 
Lorah   Gareth   -35024778.15 

この結果をコーディングするにはどうすればよいですか?ありがとう。あなたはすでに試してみましたがどのような要件に基づいて

+0

?どういうことですか?また、どのバージョンのSQL Serverを使用していますか(遅れは2012+です)? –

+0

私はこれまでに以下を試してみました... –

+0

@a_horse_with_no_name、Why lag'?私はそれが '十字結合 'を必要とすると思った。 – qxg

答えて

3

、ここでのソリューションここで、出力結果

declare @report table(Id int identity(1,1), 
        Name varchar(20), 
        Salary money) 
insert into @report(Name,Salary) 
select 'Gareth' as Name,37451000.7 as Salary 
union all 
select 'Lorah' as Name,2426222.55 as Salary 
union all 
select 'Sage' as Name,2910000.98 as Salary 

select p.Name,r.Name as SName, p.Salary - r.Salary as [Diff] 
from @report r 
inner join @report p on r.Name <> p.Name and r.Id<p.Id 

Name SName Diff 
Lorah Gareth -35024778.15 
Sage Gareth -34540999.72 
Sage Lorah 483778.43 

よろしく

1
SELECT 
    a.Name 
    ,b.Name 
    ,a.salary - b.salary as 'Salary Difference' 
FROM #salary a 
JOIN #salary b 
    ON a.name != b.name 
    AND b.id < a.id 
+0

@RichBennerは可読性のためだけのものですか? – Kidsan

+0

はい、それはあなたの最初の投稿だったので、キューをレビューしてください。目を簡単にするだけで理解しやすくなります。 –

+0

@RichBennerありがとう。 – Kidsan

関連する問題