求一个汇总求和的 SQL

eminena 2011-11-08 09:26:10
表: T1
列: A1 ,A2,A3,A4,A5,A6,A7,A8,A9,A10,……,A49,A50

其中,列 A6 是金额型的,现在要生成 一个分组求和表 T2(对A6列求和),按 T1的某些列(比如 A2,A7,A9)分组

下面这个语句,总报错:

select *,sum(A6) into T2 group by A2,A7,A9

报错显示,某些列没有包含在聚合函数或 GROUP BY 子句中

难道要把所有的列都写入 GROUP BY 子句中 ?
...全文
140 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
dongsheng10101 2011-11-09
  • 打赏
  • 举报
回复
select A2,A7,A9,sum(A6) into T2 group by A2,A7,A9
大力水手 2011-11-08
  • 打赏
  • 举报
回复

select *,sum(A6) over(partition by A2,A7,A9 ) into T2 from T1
select * from T2

group by 不行可以考虑 上面的partition by..因为他不需要把所有列都放到..分组列里
geniuswjt 2011-11-08
  • 打赏
  • 举报
回复
分太多了这孩子...
kouyiSC 2011-11-08
  • 打赏
  • 举报
回复
select A2,A7,A9,sum(A6) into T2 group by A2,A7,A9
pengxuan 2011-11-08
  • 打赏
  • 举报
回复
分组统计,select选择的列必须是在group by里的,如果没有在group by里,那么必须用上max 或min函数
chenguang79 2011-11-08
  • 打赏
  • 举报
回复
一直没有整明白楼的需求是什么,我写了一个例子做测试,可是结果就是简单的排了一下序,根本就没有求和的过程啊。
CREATE TABLE Ctemp1
(
A1 varchar(10),
A2 varchar(10),
A3 varchar(10),
A4 varchar(10),
A5 varchar(10),
A6 int,
A7 varchar(10),
A8 varchar(10),
A9 varchar(10),
)

INSERT INTO Ctemp(A1,A2,A3,A4,A5,A6,A7,A8,A9)VALUES('a1','b1','c1','d1','e1',5,'f1','g1','h1')
INSERT INTO Ctemp(A1,A2,A3,A4,A5,A6,A7,A8,A9)VALUES('a2','b2','c2','d2','e2',10,'f2','g2','h2')
INSERT INTO Ctemp(A1,A2,A3,A4,A5,A6,A7,A8,A9)VALUES('a3','b3','c3','d3','e3',15,'f3','g3','h3')
INSERT INTO Ctemp(A1,A2,A3,A4,A5,A6,A7,A8,A9)VALUES('a4','b4','c4','d4','e4',55,'f4','g4','h4')
INSERT INTO Ctemp(A1,A2,A3,A4,A5,A6,A7,A8,A9)VALUES('a5','b5','c5','d5','e5',51,'f5','g5','h5')


SELECT a1,a2,(sum(a6)) AS a10 FROM Ctemp GROUP BY a1,a2



结果如下:
a1 b1 5
a2 b1 51
a1 b2 15
a2 b2 10
a4 b4 55

最后一列为和,这个根本就不可能求出和啊。感觉没有意义啊。如果是这样的话,哪为什么不用order by 呢
CainLai 2011-11-08
  • 打赏
  • 举报
回复
既然是分组,那么当结果中存在A2,A7,A9这3列值都一样的多条记录的时候,比如:
A1 A2 A7 A9
1 2 3 4
2 2 3 4
那么这个时候数据库就不知道到你到底是想要显示值为1的A1还是值为2的A1了,所以你必须告诉数据库你想要的时候,简单的一个*会让数据库不知所措的……
-晴天 2011-11-08
  • 打赏
  • 举报
回复
统计查询基本格式:
select 分组的列,统计的值 from tb group by 分组列
你的查询:
select A2,A7,A9,sum(A6) from tb group by A2,A7,A9



--小F-- 2011-11-08
  • 打赏
  • 举报
回复
select A2,A7,A9,sum(A6) into T2 group by A2,A7,A9
AcHerat 元老 2011-11-08
  • 打赏
  • 举报
回复

select A2,A7,A9,sum(A6) as A6
into T2 group by A2,A7,A9


不要重复发帖!
q465897859 2011-11-08
  • 打赏
  • 举报
回复
ct A2,A7,A9,sum(A6) into T2 group by A2,A7,A9
或其它字段都用max()
快溜 2011-11-08
  • 打赏
  • 举报
回复
select A2,A7,A9,sum(A6) into T2 group by A2,A7,A9
TimZhuFaith 2011-11-08
  • 打赏
  • 举报
回复
++[Quote=引用 8 楼 pengxuan 的回复:]
分组统计,select选择的列必须是在group by里的,如果没有在group by里,那么必须用上max 或min函数
[/Quote]
PB菜鸟 2011-11-08
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 geniuswjt 的回复:]
分太多了这孩子...
[/Quote]
呵呵 ,估计楼主急了。
David8977 2011-11-08
  • 打赏
  • 举报
回复

--只要使用聚合函数,,其它字段也必须放在group by中,,或者使用 max(),min()包含其它字段,,
select A2,A7,A9,sum(A6) into T2 group by A2,A7,A9
hen83239148 2011-11-08
  • 打赏
  • 举报
回复
[Quote=引用楼主 eminena 的回复:]
报错显示,某些列没有包含在聚合函数或 GROUP BY 子句中

难道要把所有的列都写入 GROUP BY 子句中 ?
[/Quote]

你说对了!

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧