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下所有数量?
展开
 我来答
百度网友d9b156865
2015-05-21 · TA获得超过165个赞
知道小有建树答主
回答量:384
采纳率:33%
帮助的人:193万
展开全部
;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)
更多追问追答
追问
再次请教,看问题补充
追答
跟刚才类似的循环就行了
--循环
;with roy as(
SELECT 本级,下级 FROM TAB where 本级='A'
union all
select tab.本级,tab.下级 from tab
inner join roy on roy.下级=tab.本级)
--得出所有所有的下级
select 下级 from roy
怎么取数不用我帮你写了吧?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式