--将多个查询出的字段拼接到一个字段中
select c.ReservoirID,c.ReservoirName,c.ReservoirRemark,
--在这里用到了Sql中的stuff函数
-- STUFF字符串函数是将字符串插入到另一个字符串中。
--它会删除开始位置第一个字符串中的指定长度的字符,然后将第二个字符串插入到开始位置的第一个字符串中
stuff(
--这里查询是需要拼接的数据并在拼接是以","隔开
(select ','+WarehouseName from
--从这个里面查询需要出拼接数据的来源并
(select r.ReservoirID,r.ReservoirName,w.WarehouseID, w.WarehouseName from Warehouse w,Reservoir r where w.ReservoirID=r.ReservoirID ) a
where a.ReservoirID=c.ReservoirID
--把得到的内容以XML的形式显示,并把把拼接的内容的第一个","去掉
for xml path('')),1,1,'') as WRNames
--最后把以拼接的数据和其他数据一起查出来就是了
from (select w.WarehouseID,w.WarehouseName,w.ReservoirID,r.ReservoirName,r.ReservoirRemark from Warehouse w,Reservoir r
where w.ReservoirID=r.ReservoirID) c
group by c.ReservoirID,c.ReservoirName,c.ReservoirRemark
select
--将查出拼接的数据进行判断长度为0时
case when len(
这里时上面的方法里写的查询并凭借方法
(select stuff((select ','+WarehouseName from
(select r.ReservoirID,r.ReservoirName,w.WarehouseID, w.WarehouseName from Warehouse w,Reservoir r where w.ReservoirID=r.ReservoirID )
a where a.ReservoirID=c.ReservoirID for xml path('')),1,1,'') as WRNames))=0
--为其赋一个默认值
then '该库区没有下属仓库'
--将查出拼接的数据进行判断为空时,
else isnull(
--这里时上面的方法里写的查询并凭借方法
(select stuff(
(select ','+WarehouseName from
(select r.ReservoirID,r.ReservoirName,w.WarehouseID, w.WarehouseName from Warehouse w,Reservoir r where w.ReservoirID=r.ReservoirID ) as a
where a.ReservoirID=c.ReservoirID for xml path('')),1,1,'') as WRNames),
--条件成立时,赋默认值
'该库区没有下属仓库')
--最后进行整体查询
end as WRNames,c.ReservoirID,c.ReservoirName,c.ReservoirRemark from
(select * from Reservoir r ) as c
group by c.ReservoirID,c.ReservoirName,c.ReservoirRemark