下面这个自定义函数为什么运行没有结果?谢谢!!

tzhguan 2003-11-06 11:30:34
CREATE function dbo.qcrktj1(@date1 datetime,@date2 datetime,@p1 varchar(50),@q1 varchar(50))
returns table
as
return(
select 物资类别,器材名称,型号规格,计划价,
sum(实收数量) as 收入总数,sum(实收数量*计划价) as 收入金额
from 器材验收入库单 where @p1= @q1 and 入库日期 between @date1 and @date2
group by 物资类别,器材名称,型号规格,计划价
)
是不是因为两个变量@p1= @q1 不能相等!?
...全文
116 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
tzhguan 2003-11-06
  • 打赏
  • 举报
回复
我想把@p1做活,可以是物资名称,可以是型号规格等!
但是不出结果??
是不能这样吧?
pengdali 2003-11-06
  • 打赏
  • 举报
回复
如果这个:

CREATE function dbo.qcrktj1(@date1 datetime,@date2 datetime,@p1 varchar(50),@q1 varchar(50))
returns table
as
return(
select 物资类别,器材名称,型号规格,计划价,
sum(实收数量) 收入总数,sum(实收数量*计划价) 收入金额
from 器材验收入库单 where 入库日期 between @date1 and @date2
group by 物资类别,器材名称,型号规格,计划价
)

可以返回,那就是你的@p1= @q1 不能相等
txlicenhe 2003-11-06
  • 打赏
  • 举报
回复
1:写法没问题啊
2:看不出你要@pl,@ql这两个变量干什么?
3: 你确信按照你的查询条件能查出资料吗? 不能吧?
zjcxc 2003-11-06
  • 打赏
  • 举报
回复
--那样的话,就只能用存储过程:

CREATE proc dbo.qcrktj1
@date1 datetime,
@date2 datetime,
@p1 varchar(50),
@q1 varchar(50))
returns table
as
declare @sql varcahr(8000)
set @sql='
select 物资类别,器材名称,型号规格,计划价,
sum(实收数量) as 收入总数,sum(实收数量*计划价) as 收入金额
from 器材验收入库单 where '+@p1+'='''+ @q1+''' and 入库日期 between '''+convert(varcahr,@date1,120)+''' and '''+convert(varchar,@date2,120)+'''
group by 物资类别,器材名称,型号规格,计划价
'
exec(@sql)
go
zjcxc 2003-11-06
  • 打赏
  • 举报
回复
你的意思是:
@p1是字段名
@q1是字段的值?

如果是这样的话,就不能用函数实现.
按照你的写法,实际是比较
@p1的值是否与@q1相等.

tzhguan 2003-11-06
  • 打赏
  • 举报
回复
up

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧