【问题标题】:SQL Procedure and Reporting table Creation based upon numerous Monthly viewsSQL 过程和报告表创建基于大量月度视图
【发布时间】:2020-06-23 14:27:00
【问题描述】:

我在 Azure SQL 中有许多月度表,例如 dbo.Fresh_202001、dbo.Fresh_202002、dbo.Fresh_202003 等用于历史暂存表。

我想从设计的角度知道,构建一个程序的最佳方式是什么,我希望输出生成一个仅包含最近一个月数据的报告表,这意味着程序或报告视图应始终在月末仅从最新的月份历史表数据中读取。

例如,我们有即将到来的月底,报告视图应该读取本月的数据,即 dbo.Fresh_202006

是否可以使用您要报告的月份的变量,合并所有表并仅带回 CURRENT_DATE 等。

有什么建议吗?

【问题讨论】:

  • 对于设计 POV,您不应该有月表。至少不是没有充分的理由。而“最佳方式”是一个非常主观(实际上不存在)的衡量标准。您提到这些是“暂存”表,那么为什么这与“报告”有关。您还可以参考“报告视图”和“存储过程”。我建议您退后一步,与您的团队成员就需求、设计、方向和正确使用进行广泛讨论。看来您可能在系统设计中缺少适当的关注点。

标签: sql sql-server stored-procedures view


【解决方案1】:

我建议在创建数据的过程中每月创建一次视图。最后一步是:

alter view v_current_fresh
    select *
    from <the just-created-data>;

请注意,这样的视图确实需要动态 SQL;以上是思路。

这也可以安排为数据库中create table 的触发器。或者按照自己的日程安排工作。

【讨论】:

  • 那肯定可以工作,谢谢,任何使用动态 sql 的建议我都可以添加 FROM ' + @table 并确保所提到的视图总是从最新的或刚刚创建的数据,怎么办?
  • 也许对“当前数据”表使用同义词,而只是在每个月的第一天更改同义词?
  • 感谢 SMor,这听起来也很简单,我该如何实现呢?
【解决方案2】:

与团队跟进,因为我们需要讨论解决方案的要求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-04
    • 1970-01-01
    • 1970-01-01
    • 2011-06-03
    相关资源
    最近更新 更多