【问题标题】:Sql - Row as columnSql - 行作为列
【发布时间】:2017-12-16 06:55:16
【问题描述】:

我有以下格式的数据,大约 8 到 9 个部门,每个部门都有几个问题。

| Department | NoOfCases | Question | Rate |
+============+===========+==========+======+
| VC         | 4         | A        | 80   |
| VC         | 2         | B        | 90   |
| VC         | 1         | C        | 95   |
| ED         | 5         | A        | 85   |
| ED         | 1         | B        | 90   |
| ED         | 3         | C        | 95   |
| PH         | 3         | A        | 80   |

我想采用以下格式,我希望每个部门的案例总数和每个问题都作为列,并将评分作为其值。

| Department | NoOfCases | A  | B  | C(actual questions as columns) |
+============+===========+====+====+================================+
| VC         | 7         | 80 | 90 | 95                             |
| ED         | 9         | 85 | 90 | 95                             |
| PH         | 3         | 80 |    |                                |

我们能做到吗?

【问题讨论】:

  • 使用哪种编程语言?
  • 这里有大量已回答的问题可以做到这一点!只需搜索“将行转换为列”或“数据透视表”。
  • Sql server 2012

标签: sql sql-server tsql sql-server-2012 pivot


【解决方案1】:

您可以使用PIVOTGROUP BY 来实现它:

--create table variable to hold sample data
declare @tmp table( Department nvarchar(2),NoOfCases int, Question nvarchar(1), Rate int)

--populate sample data
insert into @tmp select 'VC', 4,'A', 80 
insert into @tmp select 'VC', 2,'B', 90 
insert into @tmp select 'VC', 1,'C', 95 
insert into @tmp select 'ED', 5,'A', 85 
insert into @tmp select 'ED', 1,'B', 90 
insert into @tmp select 'ED', 3,'C', 95 
insert into @tmp select 'PH', 3,'A', 80 

select * from @tmp

--pivot with group by
select Department,SUM(piv.NoOfCases) AS NoOfCases, 
    ISNULL(SUM(A),0) AS A, ISNULL(SUM(B),0) AS B, ISNULL(SUM(C),0) AS C
from 
( 
--select data
select  Department,NoOfCases  , Question ,RATE
from @tmp 
) src 
pivot 
( 
MAX(RATE) 
for Question in ([A], [B], [C]) 
) piv
GROUP BY Department

这是命令的输出:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-22
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多