Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在sql server中对每个id的列中的单元格求和_Sql_Sql Server_Sql Server 2008_Sql Server 2005_Sql Server 2008 R2 - Fatal编程技术网

如何在sql server中对每个id的列中的单元格求和

如何在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

我是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
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