SQL SERVER 相同记录合并

来源:百度知道 编辑:UC知道 时间:2024/06/05 03:46:28
假如
编号 单价 数量 金额
1 2 1 2
1 2 2 4
2 1 1 1
------------------------------------
我需要将编号相同的合并显示为如下:

编号 单价 数量 金额
1 2 3 6
2 1 1 1

需要怎么样写SQL 语句
列 'table1.编号' 在选择列表中无效,因为该列未包含在聚合函数中,并且没有 GROUP BY 子句。
列 'table1.单价' 在选择列表中无效,因为该列未包含在聚合函数中,并且没有 GROUP BY 子句。
---------------------------------------------------
select 住院号,姓名,票据项目,项目,规格,sum(数量) as '数量',ROUND(金额/数量,2) as 单价,sum(金额) as '金额' from 住院病人费用统计明细记录
where 病人ID='11877'
order by 住院号,姓名,票据项目,项目,规格,单价

服务器: 消息 8118,级别 16,状态 1,行 1
列 '住院病人费用统计明细记录.住院号' 在选择列表中无效,因为该列未包含在聚合函数中,并且没有 GROUP BY 子句。
服务器: 消息 8118,级别 16,状态 1,行 1
列 '住院病人费用统计明细记录.姓名' 在选择列表中无效,因为该列未包含在聚合函数中,并且没有 GROUP BY 子句。
服务器: 消息 8118,级别 16,状态 1,行 1
列 '住院病人费用统计明细记录.票据项目' 在选择列表中无效,因为该列未包含在聚合函数中,并且没有 GROUP BY 子句。
服务器: 消息

select 编号,单价, sum(数量) as '数量',sum(金额) as '金额'
from table1
group by 编号,单价
order by 编号

-----------------------------------结果------------------------
1 2 3 6
2 1 1 1

假设表名tb
create table tb1 as select sum(单价) 单价,sum(数量) 数量,sum(金额) 金额 from tb group by 编号;
drop table tb;
create table tb as select * from tb1;
也可以直接把tb1重命名为tb
我的想法是这样,不知道各位高手有没有更好的办法

楼上的都回答了,没有办法回答了,就是用GROUP BY。一楼的最好