如何在sql server中对每个id的列中的单元格求和
我是Sql server新手。sumdatediffx,y,z给出了a1和a2的和,而我希望a1和a2的和是分开的。我不知道如何按id分组。我知道sum将返回两者的总和,但我想知道如何将它们分开如何在sql server中对每个id的列中的单元格求和,sql,sql-server,sql-server-2008,sql-server-2005,sql-server-2008-r2,Sql,Sql Server,Sql Server 2008,Sql Server 2005,Sql Server 2008 R2,我是Sql server新手。sumdatediffx,y,z给出了a1和a2的和,而我希望a1和a2的和是分开的。我不知道如何按id分组。我知道sum将返回两者的总和,但我想知道如何将它们分开 select email, sum(datediff(day, x, y)) from abc where users.id ='a1' or users.id='a2' group by email, users.id email|datex|datey| a1 |1 |2
select email,
sum(datediff(day, x, y))
from abc
where users.id ='a1'
or users.id='a2'
group by email, users.id
email|datex|datey|
a1 |1 |2
a1 |1 |3
a1 |2 |5
a2 |2 |7
a2 |3 |7
a2 |1 |8
那我需要什么
email|diff
a1 |4
a2 |6
我将输出存储为不带sum的视图,然后按id选择sum组
Create view vwTesting
AS
select email,
datediff(day, x, y) as diff
from abc
where users.id ='a1'
or users.id='a2'
group by email, users.id
第二部分
Select email, sum(diff) from vwTesting group by email
这是对输出的查询
不,它应该给出每组的总数。您发布的查询将不会编译,因为您不是通过电子邮件分组,而是将其包含在选择列表中。我建议你发布你的实际问题,而不是模型。对不起,这将违反道德规范,但我在组中添加了电子邮件。你对上述问题的回答不正确。如果我没有错,答案应该是a1=6和a2=16。这里的问题是什么?您的查询会给出预期的结果,尽管@ArunGairola所说的结果是6和16,而不是4和6。看见
select email, sum(datediff(day,datex,datey)) as dd from (
select 'a1' as email, 1 as datex ,2 as datey
union all
select 'a1' as email, 1 as datex ,3 as datey
union all
select 'a1' as email, 2 as datex ,5 as datey
union all
select 'a2' as email, 2 as datex ,7 as datey
union all
select 'a2' as email, 3 as datex ,7 as datey
union all
select 'a2' as email, 1 as datex ,8 as datey
) X
GRoup BY email