Sql server 创建透视表后在SQL Server中汇总列
数据透视后,我无法在表(SQL Server)中汇总数字,我将非常感谢您的建议 如果我在示例中解释问题,效果会更好: 现有表格:Sql server 创建透视表后在SQL Server中汇总列,sql-server,Sql Server,数据透视后,我无法在表(SQL Server)中汇总数字,我将非常感谢您的建议 如果我在示例中解释问题,效果会更好: 现有表格: +-------+-----------+-----------+-------------------+ | # | $$$$$ | Fire | Water | +-------+-----------+-----------+-------------------+ | 1
+-------+-----------+-----------+-------------------+
| # | $$$$$ | 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在新问题中发布您的真实/示例数据和所需输出,因为现在我们已经回答了如何生成所需输出。