【问题标题】:Fetch data without using union all every month每月不使用 union all 获取数据
【发布时间】:2020-02-28 05:16:46
【问题描述】:
Select * from [dbo].[TRNS0119]
union all
Select * from [dbo].[TRNS0219]
union all
Select * from [dbo].[TRNS0319]
union all
Select * from [dbo].[TRNS0419]

在我的出勤 SQL Server 数据库中,每个月都会创建一个包含进出记录的新表。我必须使用union all 从所有 12 个月的数据中获取数据。我希望我的查询在使用特定名称创建新表时自动获取数据。我不是 SA 用户,因此无法进行任何更改/触发器/程序。

到目前为止,我每个月都这样做,但我想知道如何在没有任何干预的情况下每个月解决这个问题

【问题讨论】:

  • 修复您的处理,以便将每个月的数据插入到单个表中。这是解决这个问题的正确方法。增加行而不是表格。

标签: sql sql-server sql-server-2008 sql-server-2016


【解决方案1】:

对于此解决方案,您的动态表中必须有相同的字段。

表名可以是您数据库中的任何内容,这适用于所有表名。

如果你得到结果,试试这个。

declare @table table([Name] varchar(200))
declare @query VARCHAR(max)
declare @strQuery varchar(max) = '';
set @query='SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES';
insert into @table exec (@query)
--select * from @table (You will get all your table names)

declare @tablename varchar(100)
declare @i int=0

DECLARE curFetchData CURSOR FOR SELECT [Name] from @table
OPEN curFetchData          
    FETCH NEXT FROM curFetchData INTO @tablename
    WHILE @@Fetch_status = 0          
    BEGIN   
        IF(@i>0)        
            set @strQuery = @strQuery + (' UNION ALL ')     
        set @strQuery = @strQuery + (' SELECT * from '+@tablename+' ')
        set @i=@i+1;
    FETCH NEXT FROM curFetchData INTO @tablename
    END 
CLOSE curFetchData
DEALLOCATE curFetchData
PRINT (@strQuery)
EXEC (@strQuery)

【讨论】:

    【解决方案2】:

    试试这个查询。请确保输入参数。

    DECLARE @inputYear INT,@tablename VARCHAR(20)=''
    SET @inputYear =2019---- year(getdate())
    
    DECLARE @v nvarchar(30)='TRNS%'+right(convert(varchar(4),@inputyear),2)
    
    DECLARE @query nvarchar(max)=''
    SELECT @query=@query+' UNION ALL SELECT * FROM ' +  NAME from sys.tables where name like @v
    SELECT @query= STUFF(@query,1,10,'')
    EXECUTE sp_executesql @query
    

    【讨论】:

      猜你喜欢
      • 2014-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多