Sql 对包含重复项的表中的列值求和
我有一张表,上面有这样的副本:Sql 对包含重复项的表中的列值求和,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我有一张表,上面有这样的副本: ClassId Name Days SpecHours 1 Jack 250 130 1 Jack 250 130 1 Jack 250 120 2 Mike 300 130 … 我想要的是对非重复项求和。我的预期产出是: ClassId Name Days totalSpecHours 1 Jack 250
ClassId Name Days SpecHours
1 Jack 250 130
1 Jack 250 130
1 Jack 250 120
2 Mike 300 130
…
我想要的是对非重复项求和。我的预期产出是:
ClassId Name Days totalSpecHours
1 Jack 250 250
2 Mike 300 130
我无法计算总的工作时间。我正在尝试使用下面类似的东西,但它不能正常工作
totalSpecHours = sum(distinct SpecHours)
我尝试下面的等式,但它也不起作用,但我想我需要这样的东西。如果有人帮忙,我会很感激的。谢谢
totalSpecHours= (sum(X.SpecHours in (select mt.ClassId, mt.SpecHours from myTable mt group by mt.ClassId, mt.SpecHours) as X))
干杯
编辑:答案为Ty,最正确。已选择第一个答案作为正确答案。谢谢大家 尝试此查询:
select
classID,
Name,
Days,
sum(specHours) as TotalSpecHours
from
(
select distinct ClassId, Name, Days, SpecHours from myTable )t
group by classID, Name, Days
逻辑:
我们在内部查询中获取不同的值,然后对这个结果集进行分组,然后得到总和。
请注意,内部查询只计算一次,因此没有性能问题。尝试此查询:
select
classID,
Name,
Days,
sum(specHours) as TotalSpecHours
from
(
select distinct ClassId, Name, Days, SpecHours from myTable )t
group by classID, Name, Days
逻辑:
我们在内部查询中获取不同的值,然后对这个结果集进行分组,然后得到总和。
请注意,内部查询只计算一次,因此没有性能问题。这样的操作不应该起作用吗
SELECT ClassId, Name, Days, SUM(SpecHours) AS totalSpecHours
FROM (
SELECT DISTINCT ClassId, Name, Days, SpecHours
FROM Table
) outer
GROUP BY ClassId, Name, Days
这样的事情不应该奏效吗
SELECT ClassId, Name, Days, SUM(SpecHours) AS totalSpecHours
FROM (
SELECT DISTINCT ClassId, Name, Days, SpecHours
FROM Table
) outer
GROUP BY ClassId, Name, Days
使用分组方式:
SELECT ClassId, Name, Days, SUM(totalSpecHours) FROM
(
SELECT ClassId, Name, Days, SpecHours AS totalSpecHours
FROM TableName GROUP BY ClassId, Name, Days, SpecHours
)
使用分组方式:
SELECT ClassId, Name, Days, SUM(totalSpecHours) FROM
(
SELECT ClassId, Name, Days, SpecHours AS totalSpecHours
FROM TableName GROUP BY ClassId, Name, Days, SpecHours
)
您可以使用CTE(公共表表达式)
您可以使用CTE(公共表表达式)
德鲁夫乔希击败了我:)德鲁夫乔希击败了我:)而不是落选的选民。但OP不想对绝对重复行求和。@DhruvJoshi:啊。修正了这个问题。但OP不想对绝对重复行求和。@DhruvJoshi:啊。FixedOp不想计算重复的规格小时数Op不想计算重复的规格小时数