我正在使用SQL Server 2008 R2如何创建没有内部子查询的总和列?
我有一个复杂的查询,我需要有一个有条件的总结列。
这里是我的查询和结果的简化版本:
DECLARE @t TABLE (id int, condition int, value int);
INSERT INTO @t
VALUES (1,1,12), (2,0,88), (3,1,11)
SELECT
*,
(SELECT SUM(value) FROM @t WHERE condition = 1) as SumOfConditionalValues
FROM @t
下面是该查询的结果”
id condition value SumOfConditionalValues
1 1 12 23
2 0 88 23
3 1 11 23
我买不起SumOfConditionalValues
子查询
有没有一种优雅的方式来实现没有它的条件求和列?
哪些聚合命令适用于此处(如果有),以及如何应用这些命令?
@bluefeet - 这个答案通过了我所有的测试,即使在真实的数据和复杂的查询中也是如此。我应该寻找什么问题? – elarrow 2012-08-14 15:30:01
@elarrow这个答案没有问题。这个答案解决了问题,而不使用“GROUP BY”。 – Taryn 2012-08-14 15:31:30
@elarrow - 本身不应该有任何问题。也许你应该根据AnandPhadke给出的查询来测试这个查询的性能,看看你的数据集是否有一些不同。 – Lamak 2012-08-14 15:41:03