楼主应该贴下表结构和函数的定义。
请理解一下group by的定义。
《当 SELECT 语句中包含 GROUP BY 关键字时,对可以在选择列表中指定的项有一些限制。在该选择列表中所允许的项目是:
分组列。
为分组列中的每个值只返回一个值的表达式,例如将列名作为其中一个参数的聚合函数。这些函数称为矢量聚合》
如果不能满足上面的条件,则很有可能结果出错。
请理解一下group by的定义。
《当 SELECT 语句中包含 GROUP BY 关键字时,对可以在选择列表中指定的项有一些限制。在该选择列表中所允许的项目是:
分组列。
为分组列中的每个值只返回一个值的表达式,例如将列名作为其中一个参数的聚合函数。这些函数称为矢量聚合》
如果不能满足上面的条件,则很有可能结果出错。
代码如下:
create function get_parent_dep_name
(@department varchar(20),@dep_code varchar(20))
returns varchar(30)
as
begin
declare @parent_dep_name varchar(20)
select @parent_dep_name=parent_dep from b_department where dep_name=@department
-- 当求得大部门为总经理时,把@department赋值给大部门
if @parent_dep_name='总经理'
set @parent_dep_name=@department-- 当@dep_code参数为dep_code时,求出部门对应的部门代码
if @dep_code='dep_code'select @parent_dep_name=dep_code from b_department where dep_name=@parent_dep_name-- 当@dep_code参数为dep_name时,求出部门对应的业务总监名字
-- 求出业务总监的名字
if @dep_code='dep_name'select @parent_dep_name=parent_dep_name from clerk_department_parent_dep where parent_dep=@parent_dep_name group by parent_dep,parent_dep_namereturn (@parent_dep_name)
end
大侠高手请指点,本人弄了几天都不得其解!
(@department varchar(20),@dep_code varchar(20))
returns varchar(30)
as
begin
declare @parent_dep_name varchar(20)
select @parent_dep_name=parent_dep from b_department where dep_name=@department
-- 当求得大部门为总经理时,把@department赋值给大部门
if @parent_dep_name='总经理'
set @parent_dep_name=@department-- 当@dep_code参数为dep_code时,求出部门对应的部门代码
if @dep_code='dep_code'select @parent_dep_name=dep_code from b_department where dep_name=@parent_dep_nameselect @parent_dep_name=parent_dep_name from clerk_department_parent_dep where parent_dep=@parent_dep_name group by parent_dep,parent_dep_namereturn (@parent_dep_name)
end if
////////////////////////////////////////////////////////////////////////////////
big_name=dbo.get_parent_dep_username(department,'dep_name')
试一下 看看