Sql server 在SQL Server中使用聚合函数返回和
我有两张桌子 表1有以下数据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
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。是的,那就是(日期栏)举个例子,你也应该解释一下你改变了什么,为什么不把一堆代码扔给我们!你还应该解释你改变了什么——以及为什么——不要把一堆代码扔给我们!