创建具有更改表名的视图

时间:2018-09-12 18:58:39

标签: sql-server sql-server-2016

我们有一组表,它们的后缀是星期几(Table_Mon,Table_Tue等)。我试图提出一种设计,其中应用程序可以在当前的任何一天从这些列中提取有限的数据集。我当时正在查看在视图中使用动态SQL,但这不是一种选择。什么是正确的解决方案,以便应用程序无需提供星期几就可以查询表?

1 个答案:

答案 0 :(得分:2)

这是一个设计不良的数据库架构。理想情况下,应该只有一个带有列Week_Day的表,并且您只需添加适当的WHERE子句就可以查询该表。

无论如何,您将需要使用动态sql,但应使用存储过程代替视图。像...

CREATE PROCEDURE dbo.Get_Data
AS
BEGIN 
   SET NOCOUNT ON;

    DECLARE  @Sql       NVARCHAR(MAX)
            ,@TableName SYSNAME; 

    SET @TableName = N'TABLE_' + LEFT(DATENAME(WEEKDAY, GETDATE()) , 3);

    SET @Sql = N' SELECT * FROM ' + QUOTENAME(@TableName)

    Exec sp_executesql @Sql

END