【发布时间】:2017-12-21 06:05:56
【问题描述】:
请看下面
我要找的是
即总计应该同时发生在行和列级别
我的尝试
declare @t table(aggrementid varchar(20), bom_pos int, bucket int null, paymentstatus varchar(50))
insert into @t
select '1', 3000, null, null
union all
select '2', 3000, 0, 'Non-Delinquient'
union all
select '3', 4000, 0, 'Non-Delinquient'
union all
select '4', 5000, 0, 'Non-Delinquient'
union all
select '5', 7000, 0, 'NPA'
union all
select '6', 8000, 1, 'NPA'
Select
bucket,
[Non-Delinquient], [NPA], [RollBack], [RollForward],
[Stabilized], [Normalized], [PaymentStatusY],
Total = iif([Non-Delinquient] is null, 0, [Non-Delinquient]) +
iif([NPA] is null, 0, [NPA]) +
iif([RollBack] is null, 0, [RollBack]) +
iif([RollForward] is null, 0, [RollForward]) +
iif([Stabilized] is null, 0, [Stabilized]) +
iif([Normalized] is null, 0, [Normalized]) +
iif([PaymentStatusY] is null, 0, [PaymentStatusY])
From
(Select
--aggrementid,
bom_pos,
bucket, paymentstatus
From
@t) as PivotSource
PIVOT
(sum(bom_pos) FOR paymentstatus IN ([Non-Delinquient], [NPA],[RollBack],[RollForward],[Stabilized],[Normalized],[PaymentStatusY])
) as Pvt
Where
bucket is not null
这会返回这个结果:
另外,也可以通过 Rollup 函数等来实现吗?
【问题讨论】:
标签: tsql sql-server-2014