请问在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已经正确定义和填充本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报