where中使用变量的问题

dfwfs 2012-04-03 12:05:18
我想在视图中使用变量,下面的写法不对请教应如何写?

declare @yf varchar(20)
--set @yf=201203
SELECT a.月份, a.退货后回款 AS hk, a.本年回款, a.zyid, a.编码
FROM dbo.gzlj a INNER JOIN
(SELECT zyid, MAX(月份) 月份
FROM gzlj
WHERE 月份 < @yf GROUP BY zyid) b ON a.zyid = b.zyid AND a.月份 = b.月份
WHERE (a.本年回款 > 0)
...全文
107 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
dfwfs 2012-04-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
视图不能带参数,可以创建一个返回内嵌表值的用户定义函数来替代视图
[/Quote]

我是新人,能否详细说说
jyh070207 2012-04-03
  • 打赏
  • 举报
回复
视图不能带参数,可以创建一个返回内嵌表值的用户定义函数来替代视图
唐诗三百首 2012-04-03
  • 打赏
  • 举报
回复

declare @yf varchar(20)
--set @yf=201203
exec('SELECT a.月份, a.退货后回款 AS hk, a.本年回款, a.zyid, a.编码
FROM dbo.gzlj a INNER JOIN
(SELECT zyid, MAX(月份) 月份
FROM gzlj
WHERE 月份 <'+ @yf +'GROUP BY zyid) b ON a.zyid = b.zyid AND a.月份 = b.月份
WHERE (a.本年回款 > 0)')
dfwfs 2012-04-03
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
CREATE FUNCTION F_VIEW(@yf varchar(20))
RETURNS TABLE
AS
RETURN (SELECT a.月份, a.退货后回款 AS hk, a.本年回款, a.zyid, a.编码
FROM dbo.gzlj a INNER JOIN
(SELECT zyid, MAX(月份) 月份
FROM gzlj
WHERE 月份……
[/Quote]

成功!万分感谢!
jyh070207 2012-04-03
  • 打赏
  • 举报
回复
CREATE FUNCTION F_VIEW(@yf varchar(20))
RETURNS TABLE
AS
RETURN (SELECT a.月份, a.退货后回款 AS hk, a.本年回款, a.zyid, a.编码
FROM dbo.gzlj a INNER JOIN
(SELECT zyid, MAX(月份) 月份
FROM gzlj
WHERE 月份 < @yf GROUP BY zyid) b ON a.zyid = b.zyid AND a.月份 = b.月份
WHERE (a.本年回款 > 0))
GO

SELECT * FROM DBO.F_VIEW('201203')

34,873

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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