Sql server 数据透视表中的列值之和
我有以下详细信息的表格: 表格:ftestSql server 数据透视表中的列值之和,sql-server,sql-server-2008-r2,pivot,Sql Server,Sql Server 2008 R2,Pivot,我有以下详细信息的表格: 表格:ftest create table ftest ( cola varchar(10), colb varchar(10) ) 插入记录: insert into ftest values('A10','JK1'); insert into ftest values('A10','JK2'); insert into ftest values('A10','JK3'); insert into ftest values('A10','JK4'); ins
create table ftest
(
cola varchar(10),
colb varchar(10)
)
插入记录:
insert into ftest values('A10','JK1');
insert into ftest values('A10','JK2');
insert into ftest values('A10','JK3');
insert into ftest values('A10','JK4');
insert into ftest values('A10','JK1');
透视表脚本:
select cola,JK1,JK2,JK3,JK4
from
(
select cola,colb
from ftest
)p
pivot
(
count(colb)
for colb in (JK1,JK2,JK3,JK4)
) as pvt;
cola JK1 JK2 JK3 JK4
------------------------
A10 2 1 1 1
获取结果:
select cola,JK1,JK2,JK3,JK4
from
(
select cola,colb
from ftest
)p
pivot
(
count(colb)
for colb in (JK1,JK2,JK3,JK4)
) as pvt;
cola JK1 JK2 JK3 JK4
------------------------
A10 2 1 1 1
预期结果:
select cola,JK1,JK2,JK3,JK4
from
(
select cola,colb
from ftest
)p
pivot
(
count(colb)
for colb in (JK1,JK2,JK3,JK4)
) as pvt;
cola JK1 JK2 JK3 JK4
------------------------
A10 2 1 1 1
我想对所有列的值求和,并将其分配给sum
列
cola JK1 JK2 JK3 JK4 SUM
-----------------------------
A10 2 1 1 1 5
有几种不同的方法可以获得总计列 您可以将每个列添加到最终选择列表中:
select cola,JK1,JK2,JK3,JK4,
Total = JK1+JK2+JK3+JK4
from
(
select cola,colb
from ftest
)p
pivot
(
count(colb)
for colb in (JK1,JK2,JK3,JK4)
) as pvt;
看
或者您可以使用窗口函数,如COUNT()OVER()
来获取每个cola
分区的总数:
select cola,JK1,JK2,JK3,JK4, Total
from
(
select cola,colb,
Total = count(*) over(partition by cola)
from ftest
)p
pivot
(
count(colb)
for colb in (JK1,JK2,JK3,JK4)
) as pvt;
看。两者都给出了以下结果:
| COLA | JK1 | JK2 | JK3 | JK4 | TOTAL |
|------|-----|-----|-----|-----|-------|
| A10 | 2 | 1 | 1 | 1 | 5 |
有几种不同的方法可以获得总计列 您可以将每个列添加到最终选择列表中:
select cola,JK1,JK2,JK3,JK4,
Total = JK1+JK2+JK3+JK4
from
(
select cola,colb
from ftest
)p
pivot
(
count(colb)
for colb in (JK1,JK2,JK3,JK4)
) as pvt;
看
或者您可以使用窗口函数,如COUNT()OVER()
来获取每个cola
分区的总数:
select cola,JK1,JK2,JK3,JK4, Total
from
(
select cola,colb,
Total = count(*) over(partition by cola)
from ftest
)p
pivot
(
count(colb)
for colb in (JK1,JK2,JK3,JK4)
) as pvt;
看。两者都给出了以下结果:
| COLA | JK1 | JK2 | JK3 | JK4 | TOTAL |
|------|-----|-----|-----|-----|-------|
| A10 | 2 | 1 | 1 | 1 | 5 |
有几种不同的方法可以获得总计列 您可以将每个列添加到最终选择列表中:
select cola,JK1,JK2,JK3,JK4,
Total = JK1+JK2+JK3+JK4
from
(
select cola,colb
from ftest
)p
pivot
(
count(colb)
for colb in (JK1,JK2,JK3,JK4)
) as pvt;
看
或者您可以使用窗口函数,如COUNT()OVER()
来获取每个cola
分区的总数:
select cola,JK1,JK2,JK3,JK4, Total
from
(
select cola,colb,
Total = count(*) over(partition by cola)
from ftest
)p
pivot
(
count(colb)
for colb in (JK1,JK2,JK3,JK4)
) as pvt;
看。两者都给出了以下结果:
| COLA | JK1 | JK2 | JK3 | JK4 | TOTAL |
|------|-----|-----|-----|-----|-------|
| A10 | 2 | 1 | 1 | 1 | 5 |
有几种不同的方法可以获得总计列 您可以将每个列添加到最终选择列表中:
select cola,JK1,JK2,JK3,JK4,
Total = JK1+JK2+JK3+JK4
from
(
select cola,colb
from ftest
)p
pivot
(
count(colb)
for colb in (JK1,JK2,JK3,JK4)
) as pvt;
看
或者您可以使用窗口函数,如COUNT()OVER()
来获取每个cola
分区的总数:
select cola,JK1,JK2,JK3,JK4, Total
from
(
select cola,colb,
Total = count(*) over(partition by cola)
from ftest
)p
pivot
(
count(colb)
for colb in (JK1,JK2,JK3,JK4)
) as pvt;
看。两者都给出了以下结果:
| COLA | JK1 | JK2 | JK3 | JK4 | TOTAL |
|------|-----|-----|-----|-----|-------|
| A10 | 2 | 1 | 1 | 1 | 5 |
伟大的非常感谢,太好了!非常感谢,太好了!非常感谢,太好了!非常感谢你。