sql查询符合条件的记录为多条时,如果用循环语句一条一条的取出字段值
表:字段1字段2A500B300B400B600A200比如查询字段1为B的项,循环得出字段2的值为:300,400,600三层关系表:本级,下级AB1AB2B1C1B1...
表:字段1 字段2
A 500
B 300
B 400
B 600
A 200
比如查询字段1为B的项,循环得出字段2的值为:300,400,600
三层关系表:
本级, 下级
A B1
A B2
B1 C1
B1 C2
B2 C3
B2 C4
C1 D1
C2 D2
数据表:
本级,数量
B1 500
B2 200
C1 300
C2 400
C3 300
C4 400
D1 300
D2 400
怎样得到A下所有数量? 展开
A 500
B 300
B 400
B 600
A 200
比如查询字段1为B的项,循环得出字段2的值为:300,400,600
三层关系表:
本级, 下级
A B1
A B2
B1 C1
B1 C2
B2 C3
B2 C4
C1 D1
C2 D2
数据表:
本级,数量
B1 500
B2 200
C1 300
C2 400
C3 300
C4 400
D1 300
D2 400
怎样得到A下所有数量? 展开
1个回答
展开全部
;with roy as
(select 字段1,字段2,row=row_number()over(partition by 字段1 order by 字段1) from Tab)
,roy2 as
(select 字段1,cast(字段2 as nvarchar(100))字段2,row from Roy where row=1
union all
select a.字段1,cast(b.字段2+','+a.字段2 as nvarchar(100)),a.row from Roy a join roy2 b on a.字段1=b.字段1 and a.row=b.row+1)
select 字段1,字段2 from roy2 a where row=(select max(row) from roy where 字段1=a.字段1) order by 字段1 option (MAXRECURSION 0)
(select 字段1,字段2,row=row_number()over(partition by 字段1 order by 字段1) from Tab)
,roy2 as
(select 字段1,cast(字段2 as nvarchar(100))字段2,row from Roy where row=1
union all
select a.字段1,cast(b.字段2+','+a.字段2 as nvarchar(100)),a.row from Roy a join roy2 b on a.字段1=b.字段1 and a.row=b.row+1)
select 字段1,字段2 from roy2 a where row=(select max(row) from roy where 字段1=a.字段1) order by 字段1 option (MAXRECURSION 0)
更多追问追答
追问
再次请教,看问题补充
追答
跟刚才类似的循环就行了
--循环
;with roy as(
SELECT 本级,下级 FROM TAB where 本级='A'
union all
select tab.本级,tab.下级 from tab
inner join roy on roy.下级=tab.本级)
--得出所有所有的下级
select 下级 from roy
怎么取数不用我帮你写了吧?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询