一个sql自订函数返回一个表,单独运行正常,联合时报错,什么原因?
select * from dbo.getclyb('WXY-A','水电','2005-9-1','2005-8-31',1 )
这样做运行正常 如果根据编码取名称 下面这样用 就报错
select a.*,b.GCMC from dbo.getclyb('WXY-A','水电','2005-9-1','2005-8-31',1 ) a left join GC b on a.DXGCBH=b.GCBH
报错如下:
无法解决 equal to 操作的排序规则冲突。
这是什么原因?
自订函数内容为
--取材料月报
CREATE FUNCTION getclyb (@dxgcbh varchar(10),@lbmc varchar(20),@sj datetime,@sj1 datetime,@isjg smallint)
RETURNS @ybb TABLE (DXGCBH varchar(10) not null, --单项工程
LBMC varchar(20) NOT NULL, --材料类别
LLDW varchar(50), --领料单位
CLMC varchar(40), --材料名称
GGXH varchar(50), --规格型号
DW varchar(10),--单位
BDSL float,--标底数量
SYSL float, --上月累计供应数量
BYSL float, --本月进库数量
BYJE float,--本月进库金额
BYLYSL float , --本月领用量
BYLYJE float, --本月领用金额
BYXJSL float, --本月小计数量
BYXJJE float, --本月小计金额
ZJE float --总金额
)
AS
BEGIN
DECLARE @tabs TABLE (DXGCBH varchar(10) not null,
LBMC varchar(20) NOT NULL,
LLDW varchar(50), --领料单位
CLMC varchar(40),
GGXH varchar(50), --规格型号
DW varchar(10),--单位
BDSL float,--标底数量
SYSL float, --上月累计供应数量
BYSL float, --本月进库数量
BYJE float,--本月进库金额
BYLYSL float , --本月领用量
BYLYJE float, --本月领用金额
BYXJSL float, --本月小计数量
BYXJJE float, --本月小计金额
ZJE float --总金额
)
declare @bdsl float,@dw varchar(10),@tmpclmc varchar(40),@tmpggxh varchar(50),@tmpsl float,@sysl float,@bysl float,@byje float,@bylysl float,@bylyje float,@lldw varchar(50)
DECLARE jhd_cursor CURSOR FOR SELECT JHD.CLMC,JHD.GGXH,sum(JHD.CGSL) as CGSL ,JHD.DW,sum(JHD.BDSL) as BDSL FROM JHD_BT inner join JHD on JHD_BT.BH=JHD.BH
where JHD_BT.DXGCBH=@dxgcbh and JHD_BT.LBMC=@lbmc group by JHD.CLMC,JHD.GGXH,JHD.DW
OPEN jhd_cursor
FETCH NEXT FROM jhd_cursor into @tmpclmc,@tmpggxh,@tmpsl,@dw,@bdsl
WHILE @@FETCH_STATUS = 0
BEGIN
set @sysl=dbo.getsysl(@dxgcbh,@lbmc,@tmpclmc,@tmpggxh,@sj1,@isjg) --上月数量
set @bysl=dbo.getbysl(@dxgcbh,@lbmc,@tmpclmc,@tmpggxh,@sj,@isjg) --本月已供数量
set @byje=dbo.getbyje(@dxgcbh,@lbmc,@tmpclmc,@tmpggxh,@sj,@isjg) --本月已供金额
set @bylysl=dbo.getbyllsl(@dxgcbh,@lbmc,@tmpclmc,@tmpggxh,@sj,@isjg) --本月已领数量
set @bylyje=dbo.getbyllje(@dxgcbh,@lbmc,@tmpclmc,@tmpggxh,@sj,@isjg) --本月已领金额
set @lldw=dbo.getlldw(@dxgcbh,@isjg) --领料单位
insert into @tabs (DXGCBH,LBMC,LLDW,CLMC,GGXH,DW,BDSL,SYSL,BYSL,BYJE,BYLYSL,BYLYJE,BYXJSL,BYXJJE,ZJE) values (@dxgcbh,@lbmc,@lldw,@tmpclmc,@tmpggxh,
@dw,@bdsl,@sysl,@bysl,@byje,@bylysl,@bylyje,@bylysl,@bylyje,@bylyje)
FETCH NEXT FROM jhd_cursor into @tmpclmc,@tmpggxh,@tmpsl,@dw,@bdsl
END
CLOSE jhd_cursor
DEALLOCATE jhd_cursor
insert into @ybb select DXGCBH,LBMC,LLDW,CLMC,GGXH,DW,BDSL,SYSL,BYSL,BYJE,BYLYSL,BYLYJE,BYXJSL,BYXJJE,ZJE from @tabs
return
END