首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

求两个查询话语

2013-07-09 
求两个查询语句问题一:表A:某一字段【经营种类】0,1,2,3,4,7表B:两个字段【序号】【名称】0苹果1雪梨2香蕉3西瓜4

求两个查询语句
问题一:
表A:某一字段
【经营种类】
0,1,2,3,4,7
表B:两个字段
【序号】【名称】
0苹果
1雪梨
2香蕉
3西瓜
4葡萄
5草莓
6芒果
7石榴

表A中经营种类中的数字是和表B中的序号一一对应的,只不过表A中的经营种类字段中,存储的是文本形式,序号之间用,隔开。
现在我要把对应的经营种类“0,1,2,3,4,7”
查询显示为(一个字段):
苹果,雪梨,香蕉,西瓜,葡萄,石榴

问题二:
假如上述表A中的【经营种类】字段中有6行,分别是
0
1
2
3
4
7
那么查询显示的结果同样要为(同样是一个字段):苹果,雪梨,香蕉,西瓜,葡萄,石榴

该如何写这样的查询语句?
[解决办法]

use Tempdb
go
--> --> 
 
if not object_id(N'Tempdb..#A') is null
drop table #A
Go
Create table #A([Class] nvarchar(11))
Insert #A
select N'0,1,2,3,4,7'
Go
use Tempdb
go
--> --> 
 
if not object_id(N'Tempdb..#B') is null
drop table #B
Go
Create table #B([序号] int,[名称] nvarchar(2))
Insert #B
select 0,N'苹果' union all
select 1,N'雪梨' union all
select 2,N'香蕉' union all
select 3,N'西瓜' union all
select 4,N'葡萄' union all
select 5,N'草莓' union all
select 6,N'芒果' union all
select 7,N'石榴'
Go
Select [Class],Name=stuff((select ','+[名称] from #B where ','+[Class]+',' like '%,'+rtrim([序号])+',%' for xml path('')) ,1,1,'')
from #A as a
/*
ClassName
0,1,2,3,4,7苹果,雪梨,香蕉,西瓜,葡萄,石榴
*/

[解决办法]
引用:
引用:
SQL code
?



1234567891011121314151617181920212223242526272829303132333435

use Tempdb go --> -->     if not object_id(N'Tempdb..#A') is null    drop table #A Go Create tab……

对.
[解决办法]
use Tempdb
go
--> --> 
  
if not object_id(N'Tempdb..#A') is null
    drop table #A


Go
Create table #A([Class] nvarchar(11))
Insert #A
select 0  union all
select 1  union all
select 2  union all
select 3  union all
select 4   union all
select 5  union all
select 6   union all
select 7 
Go
use Tempdb
go
--> --> 
  
if not object_id(N'Tempdb..#B') is null
    drop table #B
Go
Create table #B([序号] int,[名称] nvarchar(2))
Insert #B
select 0,N'苹果' union all
select 1,N'雪梨' union all
select 2,N'香蕉' union all
select 3,N'西瓜' union all
select 4,N'葡萄' union all
select 5,N'草莓' union all
select 6,N'芒果' union all
select 7,N'石榴'
Go
select name=stuff((select  ''+[name]
from (
Select  Name= (select ','+[名称]   from #B where  [Class]=rtrim([序号])  for xml path(''))  
from #A as a) a for xml path('')),1,1,'')
[解决办法]
select name=stuff((select  ''+[name]
from (
Select  Name=    ','+[名称]  
from #A   a inner join #B b on [Class]=rtrim([序号])) a for xml path('')),1,1,'')

热点排行