再请教这个SQL语句该怎么写

hbcb 2006-04-06 09:04:02
有表table_A
名称 数量 单价 金额 备注
a 1 15.00 15.00 原价
b 2 15.00 15.00
a 3 10.00 30.00 降价

问题1:
结果要把数量、金额两个字段进行合计,并且备注在有同样名称的时候,取第一次的值,得到结果:
名称 数量 金额 备注
a 4 45.00 原价
b 2 15.00

问题2:
结果要把数量、金额两个字段进行合计,并且备注在有同样名称的时候,取每次的值串联,得到结果:
名称 数量 金额 备注
a 4 45.00 原价,降价
b 2 15.00

关键是备注字段,数量金额合计已经有人指点用
select 名称,sum(数量) as 数量,sum(金额) as 金额 from table_A group by 名称


请问SQL语句该怎么写呢?
...全文
199 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
awenon 2006-04-07
  • 打赏
  • 举报
回复
--问题1处理:
create table 价格表(名称 varchar(10),数量 int,单价 dec(10,2),金额 dec(10,2),备注 varchar(20))
insert 价格表 values('a',1,15.00,15.00,'原价')
insert 价格表 values('b',2,15.00,15.00,'')
insert 价格表 values('a',3,10.00,30.00,'降价')
go
--select *from 价格表
select a.名称,sum(a.数量) as 数量,sum(a.金额) as 金额,b.备注 from 价格 a,(select top 1 备注,名称 from 价格表 group by 名称,备注) b where a.名称*=b.名称 group by a.名称,b.备注 order by a.名称
drop table 价格表

--问题2处理:
create table 价格表 (名称 varchar(10),数量 int,单价 dec(10,2),金额 dec(10,2),备注 varchar(20))
insert 价格表 values('a',1,15.00,15.00,'原价')
insert 价格表 values('b',2,15.00,15.00,'')
insert 价格表 values('a',3,10.00,30.00,'降价')
go
--select *from 价格表
create function dbo.fc_str(@name varchar(10))
returns varchar(100)
as
begin
declare @sql varchar(1000)
set @sql=''
select @sql=@sql+','+cast(备注 as varchar) from 价格表 where 名称=@name
return stuff(@sql,1,1,'')
end
go
select 名称,sum(数量) as 数量,sum(金额) as 金额,dbo.fc_str(名称) as 备注 from 价格表 group by 名称

drop table 价格表
drop function dbo.fc_str
sxdoujg 2006-04-07
  • 打赏
  • 举报
回复
up
  • 打赏
  • 举报
回复
正解了!
xeqtr1982 2006-04-06
  • 打赏
  • 举报
回复
1。
create table tb (名称 varchar(10),数量 int,单价 dec(10,2),金额 dec(10,2),备注 varchar(20))

insert into tb select 'a',1,15.00,15.00,'原价'
union all select 'b',2,15.00,15.00,''
union all select 'a',3,10.00,30.00,'降价'
go


select a.名称,sum(a.数量) as 数量,sum(a.金额) as 金额,b.备注 from tb a,(select top 1 备注,名称 from tb group by 名称,备注) b where a.名称*=b.名称 group by a.名称,b.备注 order by a.名称

drop table tb
xeqtr1982 2006-04-06
  • 打赏
  • 举报
回复
2。
create table tb (名称 varchar(10),数量 int,单价 dec(10,2),金额 dec(10,2),备注 varchar(20))

insert into tb select 'a',1,15.00,15.00,'原价'
union all select 'b',2,15.00,15.00,''
union all select 'a',3,10.00,30.00,'降价'
go

create function dbo.fc_str(@name varchar(10))
returns varchar(100)
as
begin
declare @sql varchar(1000)
set @sql=''
select @sql=@sql+','+cast(备注 as varchar) from tb where 名称=@name
return stuff(@sql,1,1,'')
end
go

select 名称,sum(数量) as 数量,sum(金额) as 金额,dbo.fc_str(名称) as 备注 from tb group by 名称


drop table tb
drop function dbo.fc_str

34,593

社区成员

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

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