同一列中的总计差异

snp*_*.it 0 sql sql-server-2008

我有这个专栏,

  ID  Year  ColumnDesc  Amount   
  1    2000   Taken       100
  1    2000  NotTaken    10
  1    2001   Taken       200
  1    2001  NotTaken   100
Run Code Online (Sandbox Code Playgroud)

所以我需要在具有相同ID和年份的金额之间做差异所以我的表应该是这样的.

  ID  Year  ColumnDesc  Amount   
  1    2000   Taken    90
  1    2001   Taken    100
Run Code Online (Sandbox Code Playgroud)

谁能帮我..

Gor*_*off 5

我想你想要条件聚合:

select id, year, 'Taken' as ColumnDesc,
       sum(case when ColumnDesc = 'Taken' then Amount
                when ColumnDesc = 'Not Taken' then - Amount
                else 0
           end) as Amount
from t
group by id, year;
Run Code Online (Sandbox Code Playgroud)