日期:2014-05-18  浏览次数:20470 次

求Sql语句2
有个函数Fa,当调用Fa(111)返回

111,中国,河北,沧州,任丘

当调用Fa(222)返回

222,中国,北京,昌平,天通苑

员工表有数据

1,张三,"Num001",111
2,李四,"Num002",222

现在想要结果

1,张三,"Num001",中国,河北,沧州,任丘
2,李四,"Num002",中国,北京,昌平,天通苑

针对所有员工数据(至少2万条),Fa函数每次只接收一个参数

请大家帮忙


------解决方案--------------------
SQL code

--已经很简单了,没法再优化
--唯一能优化的就是函数内部的查询了,楼主把函数内部查询贴出来吧
select * from employee e cross apply dbo.Fa(e.departmentID)

------解决方案--------------------
try
SQL code
declare @sql varchar(8000)
select @sql=isnull(@sql+' union all ','')
  +' select * from dbo.Fa('+ltrim(departmentID)+')'
from 
(select distinct departmentID from employee) t

set @sql='select * from employee a left join ('+@sql+') b on a.departmentID=b.departmentID'

exec (@sql)