Sql server 创建透视表后在SQL Server中汇总列

Sql server 创建透视表后在SQL Server中汇总列,sql-server,Sql Server,数据透视后,我无法在表(SQL Server)中汇总数字,我将非常感谢您的建议 如果我在示例中解释问题,效果会更好: 现有表格: +-------+-----------+-----------+-------------------+ | # | $$$$$ | Fire | Water | +-------+-----------+-----------+-------------------+ | 1

数据透视后,我无法在表(SQL Server)中汇总数字,我将非常感谢您的建议

如果我在示例中解释问题,效果会更好:

现有表格:

    +-------+-----------+-----------+-------------------+
    |   #   |   $$$$$   |   Fire    |       Water       |
    +-------+-----------+-----------+-------------------+
    |   1   |   5       |       1   |   5               |
    |   1   |   4       |       1   |   5               |
    |   1   |   10      |       1   |   5               |
    |   2   |   3       |       3   |   8               |
    |   2   |   4       |       3   |   8               |
    +-------+-----------+-----------+-------------------+
期望输出:

+-------+-----------+-----------+-------------------+
|   #   |   $$$$$   |   Fire    |       Water       |
+-------+-----------+-----------+-------------------+
|   1   |   19      |       1   |   5               |
|   2   |   7       |       3   |   8               |
+-------+-----------+-----------+-------------------+
我倾向于相信,我已经尝试了所有通过总结和分组找到的解决方案,但没有解决,所以我依靠你。提前谢谢。我用于创建表的代码:

WITH Enerc AS
(
    SELECT  
        a1.[#],
        a1.[$$$$$],
        a2.[cause_of_loss]          
    FROM 
        data1 AS a1
    LEFT JOIN 
        data2 AS a2 ON a1.[id] = a2.[id]
)
SELECT *
FROM Enerc
PIVOT 
    (SUM(gross_claim) FOR [cause_of_loss] IN ([Fire], [Water])) AS PivotTable;

尝试在轴后按分组

 With Enerc as
    (SELECT  
        a1.[#],
        a1.[$$$$$],
        a2.[cause_of_loss]

    from data1 as a1
left join data2 as a2
on a1.[id] = a2.[id]
)
select *
into tmp
from Enerc
PIVOT
(sum(gross_claim) 
FOR [cause_of_loss] in (
[Fire], [Water])) 
as PivotTable


select   [#], sum([$$$$$])as [$$$$$],  Fire,   Water 
from #tmp
group by [#],Fire, Water 
编辑:如果权限被拒绝:

With Enerc as
    (SELECT  
        a1.[#],
        a1.[$$$$$],
        a2.[cause_of_loss]

    from data1 as a1
left join data2 as a2
on a1.[id] = a2.[id]
),phase2 as(
select *
from Enerc
PIVOT
(sum(gross_claim) 
FOR [cause_of_loss] in (
[Fire], [Water])) 
as PivotTable)
select  [#], sum([$$$$$])as [$$$$$],  Fire,   Water  
from phase2
group by [#],Fire, Water 

不需要转向。您需要的结果应该通过分组和使用
SUM

SELECT  
    a1.[#],
    SUM(a1.[$$$$$]),
    a1.[Fire]
    a1.[Water]  
from data1 as a1
group by  a1.[#],  a1.[Fire], a1.[Water]    
让我举一个例子:

DECLARE @Hello TABLE
(
    [#] INT,
    [$$$$$] INT,
    [Fire] INT,
    [Water] INT
)

INSERT INTO @Hello
(
    #,
    [$$$$$],
    Fire,
    Water
)
VALUES
(   1, -- # - int
    5, -- $$$$$ - int
    1, -- Fire - int
    5  -- Water - int
    )
, (1, 4, 1, 5)
, (1, 10, 1, 5)
, (2, 3, 3, 8)
, (2, 4, 3, 8)

SELECT 
h.#, 
SUM(h.[$$$$$]),
h.Fire, 
h.Water 
FROM @Hello h
GROUP BY h.#, h.Fire, h.Water

你想要的结果根本不是一个支点。没有行被“旋转”到列中。这似乎是个好主意。但是,不幸的是,我没有权限“在数据库“master”中拒绝创建表权限”。太好了!看来它将解决这个问题。谢谢谢谢你的回复。但我真正的查询要大得多,有90000行,数据透视成30列,我不确定没有数据透视是否可行。但我会试试。@Nihat在新问题中发布您的真实/示例数据和所需输出,因为现在我们已经回答了如何生成所需输出。