Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 数据透视表中的列值之和_Sql Server_Sql Server 2008 R2_Pivot - Fatal编程技术网

Sql server 数据透视表中的列值之和

Sql 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

我有以下详细信息的表格:

表格: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');
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 |

伟大的非常感谢,太好了!非常感谢,太好了!非常感谢,太好了!非常感谢你。