Sql 包含列总数的透视表

Sql 包含列总数的透视表,sql,sql-server-2012,pivot-table,summary,Sql,Sql Server 2012,Pivot Table,Summary,我尝试了通过搜索找到的各种样本,但似乎无法得到我需要的结果 我有以下代码 SELECT * FROM ( SELECT CR_RDate, PO_Num, RepName, CP_Amt, CS_ID, CS_Desc FROM dbo.v_CommRP ) as PIVOT ( SUM(CP_Amt) FOR CS_Desc IN ([Cat1], Cat2], [Cat3]) ) AS pv_CPR ORDER BY CR_RDate, PO_Num, CS_ID 它将创建

我尝试了通过搜索找到的各种样本,但似乎无法得到我需要的结果

我有以下代码

SELECT * FROM
(
 SELECT CR_RDate, PO_Num, RepName, CP_Amt, CS_ID, CS_Desc FROM  dbo.v_CommRP 
) as
PIVOT
(
  SUM(CP_Amt)
  FOR CS_Desc IN ([Cat1], Cat2], [Cat3])
 ) AS pv_CPR
ORDER BY CR_RDate, PO_Num, CS_ID
它将创建以下透视表

CR_RDate    PO_Num  CR_Amt      RepName     CS_ID   Cat1    Cat2    Cat3
8/24/2015   166090  $100.00     Agent 1     2   NULL    $35.00  NULL
8/24/2015   166090  $100.00     Agent 2     3   NULL    NULL    $32.50 
8/24/2015   166090  $100.00     Agent 3     3   NULL    NULL    $32.50 
8/24/2015   2528968 $200.00     Agent 1     2   NULL    $70.00  NULL
8/24/2015   2528968 $200.00     Agent 2     3   NULL    NULL    $65.00 
8/24/2015   2528968 $200.00     Agent 3     3   NULL    NULL    $65.00 
8/31/2015   166090  $200.00     Agent 1     2   NULL    $70.00  NULL
8/31/2015   166090  $200.00     Agent 2     3   NULL    NULL    $65.00 
8/31/2015   166090  $200.00     Agent 3     3   NULL    NULL    $65.00
我需要的是Cat1、Cat2和Cat3的总数。理想情况下,我可以通过CR_日期和PO_Num得到小计

然后我需要把它放在一张桌子上,或者放在一个网站上


谢谢你的帮助。

你能试试下面的方法吗?如果可以的话,请告诉我。我假设列Cat1、Cat2和Cat3是varchar

我在CTE中使用了您的查询,并从Cat列中删除了“$”。然后我取了它们的和,并连接了“$”符号。此添加/删除在Oracle 12c中运行良好

with pv as
( 
    SELECT * FROM
    (
     SELECT CR_RDate, PO_Num, RepName, CP_Amt, CS_ID, CS_Desc FROM  dbo.v_CommRP 
    ) as
    PIVOT
    (
      SUM(CP_Amt)
      FOR CS_Desc IN ([Cat1], Cat2], [Cat3])
     ) AS pv_CPR
    ORDER BY CR_RDate, PO_Num, CS_ID

)
select pv.*, '$'||cast(replace(coalesce(Cat1,'0'),'$','')+replace(coalesce(Cat2,'0'),'$','')+replace(coalesce(Cat3,''),'$','0') as varchar2(20))  as Total
 from pv

如果这不起作用,请告诉我

虽然有一些语法上的差异,但我已经解决了,并使用了这个codeCool!如果对你有效,请勾选答案左边的勾号,接受答案。它不提供列总计,但行总计如果我进行汇总查询和union all,我几乎可以得到我想要的。谢谢你的指点。