SQL server2012中的视图可以设置自动更新嘛?

dgyzlc 2018-05-31 11:27:54
在SQL Server中创建了一个视图,创建的视图主要的功能就是这个月要显示上个月全部的数据(经过简单的数据清理:多个表联合查询,有点复杂),所以每个月的数据都是不一样的,所以问问各位大侠,有没有属性,或者说通过其他什么方法,实现视图在某个时间的定期自动更新,这样,不论什么时候,查询这个视图,得到的结果才永远都是上个月的数据,谢谢!
...全文
2850 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
dgyzlc 2018-09-14
  • 打赏
  • 举报
回复
引用 3 楼 xxzxwsx 的回复:

CREATE VIEW 上月数据
AS
SELECT *
FROM 表
WHERE Year(日期)=Year(DateAdd(m, -1, GetDate()))
AND Month(日期)=Month(DateAdd(m, -1, GetDate()))

谢谢您的建议。
dgyzlc 2018-09-14
  • 打赏
  • 举报
回复
引用 2 楼 z10843087 的回复:
@dgyzlc 可以对数据库做个快照。每天一个,查这个快照里面对应的数据就可以

谢谢你的建议,我尝试一下。
dgyzlc 2018-09-14
  • 打赏
  • 举报
回复
引用 1 楼 yenange 的回复:
新建一个 SQL Server 的作业, 每月1 号凌晨重建创建这个视图就可以了。

谢谢,方法简单易懂
zjcxc 2018-06-01
  • 打赏
  • 举报
回复
如果你真的用视图,那么不要考虑更新,视图是查询的时候即时查数据的 当然,也可以通过索引视图做到数据变化时自动更新,查询的时候使用自动更新的存储数据,这个会影响数据变更性能
OwenZeng_DBA 2018-05-31
  • 打赏
  • 举报
回复
@dgyzlc 可以对数据库做个快照。每天一个,查这个快照里面对应的数据就可以
吉普赛的歌 2018-05-31
  • 打赏
  • 举报
回复
新建一个 SQL Server 的作业, 每月1 号凌晨重建创建这个视图就可以了。
shinger126 2018-05-31
  • 打赏
  • 举报
回复
CREATE VIEW 上月数据 AS SELECT * FROM 表 WHERE 日期 >=cast( convert(varchar(7),getdate(),120)+'-01' as datetime) and 日期 < dateadd(month,1,convert(varchar(7),getdate(),120)+'-01' ) 这样岂不是更好
在路上_- 2018-05-31
  • 打赏
  • 举报
回复
引用 6 楼 shinger126 的回复:
CREATE VIEW 上月数据 AS SELECT * FROM 表 WHERE 日期 >=cast( convert(varchar(7),getdate(),120)+'-01' as datetime) and 日期 < dateadd(month,1,convert(varchar(7),getdate(),120)+'-01' ) 这样岂不是更好
是的 考虑效率的话,列上最好不用函数,宁愿后边日期的转化复杂一点
在路上_- 2018-05-31
  • 打赏
  • 举报
回复
引用 5 楼 shinger126 的回复:
[quote=引用 4 楼 xxzxwsx 的回复:] OR

CREATE VIEW 上月数据
AS
SELECT *
FROM 表
WHERE CONVERT(Char(6), 日期, 112)=CONVERT(Char(6), DateAdd(m, -1, GetDate()), 112)
如果日期上有索引,而表里面数据量又大的话,你这样搞会死人的[/quote] 是的 数据量大的话要另想办法。如可考虑分区
shinger126 2018-05-31
  • 打赏
  • 举报
回复
引用 4 楼 xxzxwsx 的回复:
OR

CREATE VIEW 上月数据
AS
SELECT *
FROM 表
WHERE CONVERT(Char(6), 日期, 112)=CONVERT(Char(6), DateAdd(m, -1, GetDate()), 112)
如果日期上有索引,而表里面数据量又大的话,你这样搞会死人的
在路上_- 2018-05-31
  • 打赏
  • 举报
回复

CREATE VIEW 上月数据
AS
SELECT *
FROM 表
WHERE Year(日期)=Year(DateAdd(m, -1, GetDate()))
  AND Month(日期)=Month(DateAdd(m, -1, GetDate()))
在路上_- 2018-05-31
  • 打赏
  • 举报
回复
OR

CREATE VIEW 上月数据
AS
SELECT *
FROM 表
WHERE CONVERT(Char(6), 日期, 112)=CONVERT(Char(6), DateAdd(m, -1, GetDate()), 112)

22,209

社区成员

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

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