这个SQL语句怎么写?帮帮忙

enjoynothing 2003-09-03 11:26:25
表ROOM:ROOMID NAME ROOMAREA DESCRIPT
—————————————————————
105 Mary 150 dweller
306 IBM 180 company
307 IBM 200 company
308 IBM 120 company
505 Linda 150 dweller
506 Linda 180 dweller
709 P&G 250 company
__________________________________________

最好能得到如下结果:
ROOMID NAME ROOMAREA DESCRIPT
—————————————————————
105 Mary 150 dweller
306,307,308 IBM 500 company
505,506 Linda 330 dweller
709 P&G 250 company
________________________________________

这样也行:
NAME ROOMAREA DESCRIPT
——————————————————
IBM 500 company
Linda 330 dweller

________________________________________
谢谢了
...全文
36 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
aierong 2003-09-03
  • 打赏
  • 举报
回复
create table a( ROOMID varchar(100), NAME varchar(100), ROOMAREA smallint, DESCRIPT varchar(100))
insert into a values('105','Mary',150,'dweller')
insert into a values('306', 'IBM', 180 ,'company')
insert into a values('307', 'IBM' , 200 ,'company')
insert into a values('308', 'IBM', 120 , 'company')
insert into a values('505' , 'Linda' ,150 ,'dweller')
insert into a values('506', 'Linda', 180 ,'dweller')
insert into a values( '709', 'P&G' , 250 ,'company')
select * from a


创建表

CREATE FUNCTION funa(@NAME NVARCHAR(20))
RETURNS NVARCHAR(200)
AS
BEGIN
DECLARE @str NVARCHAR(200)
SET @str=''
SELECT @str = @str+ROOMID+',' FROM a WHERE NAME =@NAME
SET @str = LEFT(@str,LEN(@str)-1)
RETURN @str
END
再创建函数

select dbo.funa(NAME) AS ROOMID,NAME,SUM(ROOMAREA) AS ROOMAREA,DESCRIPT
FROM a GROUP BY NAME,DESCRIPT

查询结果
waitwater 2003-09-03
  • 打赏
  • 举报
回复

create table #table(ROOMID varchar(10), NAME varchar(10), ROOMAREA int, DESCRIPT char(10))
insert #table
values(105,'Mary',150,'dweller')

insert #table
values(306,'IBM',180,'company')
insert #table
values(307,'IBM',200,'company')
insert #table
values( 308,'IBM',120,'company')
insert #table
values( 505,'Linda',150,'dweller')
insert #table
values( 506,'Linda',180,'dweller')
insert #table
values( 709,'P&G', 250,'company')

create table #table2 (ROOMID varchar(8000), NAME varchar(10), ROOMAREA int, DESCRIPT char(10))

insert #table2(NAME,ROOMAREA,DESCRIPT)
select name,sum(roomarea) as roomarea,descript from #table
group by name,descript


declare @i int,@temp int
select @temp=count(*) from #table
set @i=0
declare @tempid varchar(10)
while @i<@temp
begin
SELECT top 1 *
INTO #table3
FROM #table


update #table2
set roomid=isnull(b.roomid,'')+a.roomid+','
from #table3 a,#table2 b
where a.name=b.name and a.descript=b.descript

select @tempid=roomid from #table3
IF exists (select * from #table where #table.roomid=@tempid )
begin
delete #table where roomid=@tempid
end
drop table #table3
set @i=@i+1
end
select * from #table2
drop table #table
drop table #table2

yujohny 2003-09-03
  • 打赏
  • 举报
回复
第一种:先写一个函数
CREATE FUNCTION GETSTR(@NAME NVARCHAR(20))
RETURNS NVARCHAR(200)
AS
BEGIN
DECLARE @str NVARCHAR(200)

SET @str=''

SELECT @str = @str+ROOMID+','
FROM ROOM WHERE NAME =@NAME

SET @str = LEFT(@str,LEN(@str)-1)
RETURN @str
END

然后调用
select dbo.getstr([NAME]) AS ROOMID,[NAME],SUM(ROOMAREA) AS ROOMAREA,DESCRIPT
FROM ROOM GROUP BY [NAME],DESCRIPT

第二种:
select [NAME],SUM(ROOMAREA) AS ROOMAREA,DESCRIPT
FROM ROOM GROUP BY [NAME],DESCRIPT
Cocoky 2003-09-03
  • 打赏
  • 举报
回复
第二种:
SELECT DISTINCT NAME,ROMMAREA,DESCRIPT FROM ROOM
llsky 2003-09-03
  • 打赏
  • 举报
回复

SELECT NAME,SUM(ROMMAREA),DESCRIPT FROM ROOM GROUP GY NAME,DESCRIPT
friendliu 2003-09-03
  • 打赏
  • 举报
回复
select name,sum(roomarea) as roomarea,descipt from room
group by name,decript

enjoynothing 2003-09-03
  • 打赏
  • 举报
回复
谢谢,第一种方案圆满解决。如果硬要挑毛病的话,好象第二种方案还是不行,我不要mary ,P&G的记录。
zhbname 2003-09-03
  • 打赏
  • 举报
回复
up
笔试(erp系统管理员)题目 求解 偶乃一应届毕业生,上星期在网上见到一不错的公司招oracle数据库管理,于是屁颠屁颠跑到那公司,骗过门卫和保安,咨询了搞卫生的阿姨后,见到了人力资源部主管,话都没说上两句,给偶一道题目(erp系统管理员),结果没几个会做的。其实我自己也挺想往erp方向发展,所以打算下个星期再去。 请各位大虾们帮帮忙忙,提点提点。(我在论坛上查了些,资料,还是有好多不会的。) 1。列出 erp供应商及erp产品的名称,版本? (erp供应商是不是:racle erp在咱国内的用户比如,华菱、湘钢、衡钢、承 钢、济钢等等。名称和版本呢?) 2。名词解释 erp,crm,hr,oa,srm,pdm (我只查到了erp,crm,hr的解释,其他的查不到) 3。用一句话说明 bom,采购计划,生产订单,销售订单,物料清单 (查不到 ) 4。sql语句。 ‘存货档案’(表一): 存货编码(c),存货名称(c),存货规格(c),存货类别(c) ‘发货单’(表二):存货编码(c),数量(n),单价(n) 用sql出 A:存货类别为'办公用品',发货金额在1000元以下的所有发货单 B: 按存货名称汇总发货单的发货金额 (此题会做一点点,但是得不全,还得请大家指导) 5 出erp系统对'销售发货单',‘销售普通发票’生成的会计分录 (完全摸不着头脑)

34,874

社区成员

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

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