添加来自不同记录的值

时间:2014-05-24 14:45:53

标签: sql

从下表中我想添加来自相同记录的2个值和来自不同记录的一个值,即(来自第一个记录的extraaamt)+(来自第二个记录的trnamt)

 5140560000001183   1016.00     0.00    2014-05-23  R       0.00    1017    13
 5140560000001183   1016.00     0.00    2014-05-24  N       30.00   1017    0




carno               emi         recamt  lastrecdate status penamt trnamt extraamt
5140560000001183    1016.00     0.00    2014-05-23  R       0.00    1017    13
5140560000001191    880.00      0.00    2014-05-23  R       0.00    880     0
5140560000001142    934.00      0.00    2014-05-23  P       0.00    500     0
5140560000001209    963.00      0.00    2014-05-23  P       0.00    600     0
5140560000001175    1024.00     0.00    2014-05-23  N       0.00    0       0
5140560000001167    1117.00     0.00    2014-05-23  N       0.00    0       0
5140560000001159    834.00      0.00    2014-05-23  N       0.00    0       0
5140560000001183    1016.00     0.00    2014-05-24  N       30.00   1017    0
5140560000001191    880.00      0.00    2014-05-24  N       0.00    880     0
5140560000001142    934.00      0.00    2014-05-24  N       0.00    500     0
5140560000001209    963.00      0.00    2014-05-24  N       0.00    600     0
5140560000001175    1024.00     0.00    2014-05-24  N       0.00    0       0
5140560000001167    1117.00     0.00    2014-05-24  N       0.00    0       0
5140560000001159    834.00      0.00    2014-05-24  N       0.00    0       0

我使用了以下查询,但仍无法提供帮助:

 Select
 Case WHEN ( lastrecdate=( cast (GETDATE() as DATE))and CardNo=CardNo and Status in('N','P') ) then trnammt else 0 end +
 Case WHEN ( lastrecdate=( cast (GETDATE() as DATE))and CardNo=CardNo and Status in('N','P')) then pendamt else 0 end +
 Case WHEN (lastrecdate= (select MAX(lastrecdate ) from Tbl_Emi WHERE Status ='R' and CardNo=CardNo)  ) then extraamt  else 0 end  as totalamount
 from Tbl_Emi where  CardNo=CardNo

2 个答案:

答案 0 :(得分:0)

请在 CrossTab查询/数据透视查询上进行google。您可以使用此功能完成此任务 CrossTab查询非常棒,这有助于生成报告并使用汇总值进行播放。 Excel / Ms Access为数据透视表提供了很好的用户界面。这是将行传输到列中的方法。它更常用于生成矩阵形式的报告 请看this blog

答案 1 :(得分:0)

select tt.carno, t1.extraamt+t2.trnamt total from

(select t.carno,
MIN(t.lastrecdate) first
,  MAX(t.lastrecdate) second

from dbo.[Table] t 
group by t.carno) tt
inner join dbo.[Table] t1
 on t1.carno=tt.carno and t1.lastrecdate=tt.first
inner join dbo.[Table] t2 
  on t2.carno=tt.carno and t2.lastrecdate=tt.second