关于数据库的一道笔试题:select * from table1……

来源:百度知道 编辑:UC知道 时间:2024/06/16 11:31:17
执行:select * from table1
得:
name value
---------------
a 100
a 200
b 50
a 400
b 60

编写SQL语句,显示以下的内容:

a 100 200 400
b 50 60

请问是怎样的SQL语句?

--建表
create table tb(id int, value varchar(10))
insert into tb values(1, 'aa')
insert into tb values(1, 'bb')
insert into tb values(2, 'aaa')
insert into tb values(2, 'bbb')
insert into tb values(2, 'ccc')
go
--建函数
CREATE FUNCTION dbo.f_str(@id int)
RETURNS varchar(8000)
AS
BEGIN
DECLARE @r varchar(8000)
SET @r = ''
SELECT @r = @r + ',' + value FROM tb WHERE id=@id
RETURN STUFF(@r, 1, 1, '')

END

GO
-- 调用函数
SELECt id, value = dbo.f_str(id) FROM tb GROUP BY id

drop table tb
drop function dbo.f_str

这是个列变行的问题,有点意思,,关注

就是一个查询语句:select value from table1 where name='a';
B就换成B就好了: select value from table1 where name='b';

select t1.name,t1.value,t2.value,t3.value from (select name,value from table1 where name = 'a' and rownum <=1 ) t1