Sql server 在SQL Server中使用聚合函数返回和

Sql server 在SQL Server中使用聚合函数返回和,sql-server,group-by,aggregate-functions,Sql Server,Group By,Aggregate Functions,我有两张桌子 表1有以下数据 Id1 Name Comments -------------------- 1 abc hgdhg 2 xyz mnoph 3 ysdfr jkljk 4 asdf iiuoo 5 pqrs liuoo Id2 Id1 count date ------------------------------- 1 1 18 11/16/2005 2

我有两张桌子

表1有以下数据

Id1  Name   Comments
--------------------
 1   abc     hgdhg
 2   xyz     mnoph  
 3   ysdfr   jkljk
 4   asdf    iiuoo
 5   pqrs    liuoo
Id2   Id1   count      date
-------------------------------
 1     1      18     11/16/2005
 2     1      1     11/15/2005
 3     1      4     11/25/2005
 4     2      4     11/22/2005
 5     3      8     11/05/2005
 6     3      3     11/30/2005
 7     4      2     11/29/2005
 8     3      0     11/04/2005
 9     2      5     11/02/2005
 10    3      9     11/22/2005
 11    2      15     11/10/2005
 12    5      12     11/19/2005
表2有以下数据

Id1  Name   Comments
--------------------
 1   abc     hgdhg
 2   xyz     mnoph  
 3   ysdfr   jkljk
 4   asdf    iiuoo
 5   pqrs    liuoo
Id2   Id1   count      date
-------------------------------
 1     1      18     11/16/2005
 2     1      1     11/15/2005
 3     1      4     11/25/2005
 4     2      4     11/22/2005
 5     3      8     11/05/2005
 6     3      3     11/30/2005
 7     4      2     11/29/2005
 8     3      0     11/04/2005
 9     2      5     11/02/2005
 10    3      9     11/22/2005
 11    2      15     11/10/2005
 12    5      12     11/19/2005
我想以名称、注释、自2005年11月10日以来所有计数的总和的形式返回输出

我正在尝试以下查询(带out date where条件)

但这是一个错误

名称在选择列表中无效,因为它未包含在聚合函数或Group by子句中

谁能帮我查询一下(日期和条件)?这个怎么了


提前感谢

没有聚合函数的select语句中的每一列也需要按句分组,以防止聚合错误,关于限制日期,请使用where子句定义条件,如前所示

select 
    Name, Comments, sum(count) 
from 
    Table1 T1 
join 
    Table2 T2 on T1.Id1 = T2.Id1 
where  
    date >= '2005-11-10 00:00:00'
group by 
    Name, Comments

您必须添加聚合函数中未包含的任何列,并使用
where
过滤结果:

select Name, 
      Comments, 
      sum(count) 
from Table1 T1 join Table2 T2 on T1.Id1 = T2.Id1 
where T2.[date] >= '11/10/2005'
group by Name, Comments

您可以使用下面的查询

SELECT  T1.Name ,
    T1.Comments ,
    SUM(T2.[count]) AS [count]
FROM    Table1 T1
    INNER JOIN Table2 T2 ON T1.Id1 = T2.Id1
WHERE   CAST(T2.[date] AS DATE) >= CAST('11/10/2005' AS DATE)
GROUP BY T1.Name ,
    T1.Comments

按姓名分组,评论
谢谢。这起作用了。你能帮我应用日期条件吗?你必须添加一个
WHERE
来过滤
[date]
,顺便说一句,不要使用保留的单词来命名对象(在你的例子中
date
列)
date
是一个数据类型。非常感谢@Sami。是的,那就是(日期栏)举个例子,你也应该解释一下你改变了什么,为什么不把一堆代码扔给我们!你还应该解释你改变了什么——以及为什么——不要把一堆代码扔给我们!