有一个表a
id
1
2
3
4
5
还有一个表b
id pid
1 1
2 1
3 3
4 2
5 2
要求输出
id sid
1 1,2
2 2,4,5
3 3
4 4
5 5
a表是一个数据主表,b表id是对应a表id的,pid是该列id的父id,输出表是a表数据,结合b表,输出的sid是输出列id的子id
这个SQL语句怎么写?
select a.id, (a.id + ',' + b.pid) as sid from a
right join b on a.id=b.id
这个用SQL语句实现不了 可以在C#中倒手一步
拿出来a和b的全部数据 为datatable
在a的talbe中添加一列tableA。colunms。Add(“sid”)
if(tableA。rows[i][id]==tableB.rows[j]["pid"])
{
if(string.isnotempty(tableA.rows[i][sid]))
{
tableA.rows[i][sid]=tableB.rows[j]["id"];
}
else
{
tableA.rows[i][sid]=tableA.rows[i][sid]+","+tableB.rows[j]["id"];
}
}
最后的tableA就是您要的结果了。
ALTER FUNCTION [dbo].[FunDIS](@id int,@datapath varchar(200)) RETURNS varchar(MAX) ASbegin declare @ret varchar(MAX) set @ret= '' select @ret=@ret+ ','+ rtrim(DistrictID) from DistrictDirectory as dd where dd.datapath like @datapath+'%'RETURN(@ret)end
写了一个SQL函数实现这个功能了