Tsql 如何对组进行求和并在单独的列中提供总计?
我研究这个问题已经有一段时间了,虽然我知道我可以在LINQ做这个程序。我开始考虑,如果这是一个不同的大型数据集,那么解决方案将具有可扩展性。我正在积累使用SQL的经验,相信有一种方法可以在不执行插入的情况下获得结果 我拥有的数据如下所示:Tsql 如何对组进行求和并在单独的列中提供总计?,tsql,group-by,sum,Tsql,Group By,Sum,我研究这个问题已经有一段时间了,虽然我知道我可以在LINQ做这个程序。我开始考虑,如果这是一个不同的大型数据集,那么解决方案将具有可扩展性。我正在积累使用SQL的经验,相信有一种方法可以在不执行插入的情况下获得结果 我拥有的数据如下所示: ids type total A01 x 1 A01 x 2 A01 x 3 A01 y 4 B01 y 2 B01 x 3 B01 y 1 C01 x 1 C01 y 2 C01 x 5 C01 y 6 i
ids type total
A01 x 1
A01 x 2
A01 x 3
A01 y 4
B01 y 2
B01 x 3
B01 y 1
C01 x 1
C01 y 2
C01 x 5
C01 y 6
id x total y total
A01 6 4
B01 3 3
C01 6 8
我想要的是如下所示的数据:
ids type total
A01 x 1
A01 x 2
A01 x 3
A01 y 4
B01 y 2
B01 x 3
B01 y 1
C01 x 1
C01 y 2
C01 x 5
C01 y 6
id x total y total
A01 6 4
B01 3 3
C01 6 8
我的信仰错了吗
...
SUM(CASE type WHEN'x' THEN total ELSE 0 END),
SUM(CASE type WHEN 'y' THEN total ELSE 0 END)
...
Group by
Id
抱歉,很难在电话中给出完整答案
抱歉,很难在电话上给出完整答案这称为数据透视表,有多种方法可以实现 如果您使用的是SQL Server 2005或更高版本,
PIVOT
操作符()是一个简洁的选项:
select id, [x], [y]
from temp d
PIVOT ( sum(total) for type in ([x],[y]) ) p
这称为透视表,有很多方法可以实现它 如果您使用的是SQL Server 2005或更高版本,
PIVOT
操作符()是一个简洁的选项:
select id, [x], [y]
from temp d
PIVOT ( sum(total) for type in ([x],[y]) ) p
我想你要算一个总数。这是正确的格式,但“总计”不起作用。@mark sqldev:conditional sum是必需的。为什么要计算总数?我明白了,你已经得到了,数据在我看来就像一个ID。你是对的(+1)我想你要计算总数。这是正确的格式,但“总计”不起作用。@mark sqldev:conditional sum是必需的。为什么是计数之和?我明白了,你已经知道了,数据在我看来就像一个ID。你是对的(+1)