在 sql server 中创建总计行

Rak*_*esh 1 sql-server pivot

我正在编写一个查询,其中表末尾应该有一个总行,该行给出closed, open,的总和reassigned columns

我能够做一个支点,但无法知道如何在最后放置一行。我在网上搜索过,但大多找到了创建列和行或仅列的解决方案。我喜欢开发,对数据库不太了解。下面是我的支点。请让我知道我该怎么做。

select *
from 
(
  select [case owner] as AGENT, [final status]
  from StatusTable
) src
pivot
(
  count([final status])
  for [final status] in ([CLOSED], [OPEN], [REASSIGNED])
) piv
Run Code Online (Sandbox Code Playgroud)

当前输出如下图

在此处输入图片说明

在这里我想要一个额外的行,如下所示。

TOTAL | 2 | 8 | 2
Run Code Online (Sandbox Code Playgroud)

Luc*_*ero 5

您可以使用UNION ALL连接具有相同列的行集:

with ctePivot as (
    select *
    from 
    (
      select [case owner] as AGENT, [final status]
      from StatusTable
    ) src
    pivot
    (
      count([final status])
      for [final status] in ([CLOSED], [OPEN], [REASSIGNED])
    ) piv
)
select * from ctePivot
union all
select 'TOTAL', sum([CLOSED]), sum([OPEN]), sum([REASSIGNED]) from ctePivot
Run Code Online (Sandbox Code Playgroud)

或者只有一个更简单的变体GROUP BY ROLLUP

select ISNULL([case owner], 'TOTAL') as AGENT, 
    SUM(CASE WHEN [final status]='CLOSED' THEN 1 ELSE 0 END) [CLOSED],
    SUM(CASE WHEN [final status]='OPEN' THEN 1 ELSE 0 END) [OPEN],
    SUM(CASE WHEN [final status]='REASSIGNED' THEN 1 ELSE 0 END) [REASSIGNED]
    from StatusTable
    GROUP BY ROLLUP ([case owner]);
Run Code Online (Sandbox Code Playgroud)