2道sql面试题.求解.(华为的)
发2道sql面试题.
题一表tset字段valueA,valueB A B B C C D D E问如何得到一个树形结构.E D C B A题二表tset字段Id, name,value 1 name1 2 2 name1 4 3 name2 5 4 name2 6 5 name2 10 6 name3 8问如何得到结果.name1,6,name2,21,name3,8
--1、--> 测试数据:[tset]if object_id('[tset]') is not null drop table [tset]create table [tset]([valueA] varchar(1),[valueB] varchar(1))insert [tset]select 'A','B' union allselect 'B','C' union allselect 'C','D' union allselect 'D','E';with cte as( select valueA from [tset] where valueB='e' union all select b.valueA from cte a inner join [tset] b on a.valueA=b.valueB)select t.* from cte as t left join [tset] b on t.valueA=b.valueA/*valueA------DCBA*/
[解决办法]
第一题看精华帖BOM第二题create table PP( id int identity(1,1) primary key, name nvarchar(30), [value] int )insert into PP select 'name1',2insert into PP select 'name1',4insert into PP select 'name2',5insert into PP select 'name2',6insert into PP select 'name2',10insert into PP select 'name3',8select name,sum([value]) [value] from PP group by nameselect * into UU from( select name,sum([value]) [value] from PP group by name) pselect * from UUcreate function dbo.Getstr()returns nvarchar(1000)as begin declare @sql nvarchar(1000) set @sql='' select @sql=@sql+name+','+cast([value] as varchar(10)) from UU return @sqlendselect dbo.Getstr()----------------------------------------------------------------------------------------------------------------name1,6name2,21name3,8(1 行受影响)