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

自定义函数的有关问题,急....
有一个表yy   如下
huh                     bh                   dangqzt
111                                 22                                               运行
111                                 11                                               拆除
我现在是对huh的重复行进行合并,使之成为以下的形式
111                                   22,11                                 运行,拆除
下面是我的查询语句
自定义函数1
CREATE   FUNCTION   dbo.f3_str(@huh   varchar(10))
RETURNS   varchar(100)
AS
BEGIN
DECLARE   @re   varchar(100)
SET   @re= ' '
SELECT   @re=@re+ ', '+CAST(bh   as   varchar)
FROM   yy
WHERE   huh=@huh
RETURN(STUFF(@re,1,1, ' '))
END
自定义函数4
CREATE   FUNCTION   dbo.f4_str(@huh   varchar(10))
RETURNS   varchar(100)
AS
BEGIN
DECLARE   @re   varchar(100)
SET   @re= ' '
SELECT   @re=@re+ ', '+CAST(dangqzt   as   varchar)
FROM   yy
WHERE   huh=@huh
RETURN(STUFF(@re,1,1, ' '))
END
查询语句
SELECT     huh,   dbo.f3_str(huh)   AS   bh,   dbo.f4_str(huh)   AS   dangqzt
FROM   yy
GROUP   BY   huh
,但结果bh   和dangqzt   列均为null,这是为什么啊?

------解决方案--------------------
try

CREATE FUNCTION dbo.f3_str(@huh varchar(10))
RETURNS varchar(100)
AS
BEGIN
DECLARE @re varchar(100)
SET @re= ' '
SELECT @re=@re+ ', '+CAST(IsNull(bh, ' ') as varchar) --加入isnull判斷
FROM yy
WHERE huh=@huh
RETURN(STUFF(@re,1,1, ' '))
END
GO
--自定义函数4
CREATE FUNCTION dbo.f4_str(@huh varchar(10))
RETURNS varchar(100)
AS
BEGIN
DECLARE @re varchar(100)
SET @re= ' '
SELECT @re=@re+ ', '+CAST(IsNull(dangqzt, ' ') as varchar) --加入isnull判斷
FROM yy
WHERE huh=@huh
RETURN(STUFF(@re,1,1, ' '))
END
GO
------解决方案--------------------
看来好多sql高手都在用ie6呀,一看代码无法缩近,就知道用的是ie6.0