VicJalan 2023-07-07 00:33 采纳率: 72.7%
浏览 66
已结题

sql server view问题

请问在Sql server 中,如果我有2个结构一样的表格,例如现在是7月,想要create view ,从A表中提取Apr,May,Jun 过去时间线的列,从F表中提取当下的7月以及未来到3月的列。与此同时,F表中的列1,2,3...也会select出来,连接的Key是ON A.1=F.1 and A.2=F.2 and A.3=F3,where clause用当月的GETDATE形式限定了提取的数据量,比如Where A.Identifier=GETDATE()-32。 现在已知的是两个表完全一样,都有500条数据,view返回的结果也应该是500,如何能够实现这一要求又没有duplicate records呢?

  • 写回答

10条回答 默认 最新

  • jinke2010_happy 2023-07-07 08:27
    关注
    
    要创建一个满足你描述的要求的视图,可以按照以下步骤进行操作:
    
    创建一个视图,从表A中提取Apr、May和Jun的列:
    sql
    Copy Code
    CREATE VIEW ViewName AS
    SELECT *
    FROM A
    WHERE [date_column] >= DATEADD(MONTH, -3, GETDATE())
      AND [date_column] < DATEADD(MONTH, 1, GETDATE());
    在上述代码中,请将[date_column]替换为适用于你的表格的日期列名称。
    
    创建另一个视图,从表F中提取当前月和未来三个月的列,并与表A连接:
    sql
    Copy Code
    CREATE VIEW ViewName AS
    SELECT F.*, A.*
    FROM F
    INNER JOIN A ON A.1 = F.1 AND A.2 = F.2 AND A.3 = F.3
    WHERE A.[date_column] >= GETDATE()
      AND A.[date_column] <= DATEADD(MONTH, 3, GETDATE());
    同样,也请将[date_column]替换为适用于你的表格的日期列名称。
    
    这样创建的两个视图将提取符合条件的数据,并根据键值进行表连接,确保不会出现重复记录。同时,每个视图返回的结果应该都是500条,因为你已经明确指定了特定时间范围。
    
    请注意,上述代码假设你的日期列是合适的数据类型(例如DATETIME),并且你的表A和表F已经正确定义和填充
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(9条)

报告相同问题?

问题事件

  • 系统已结题 7月16日
  • 已采纳回答 7月8日
  • 创建了问题 7月7日