3
我需要在30天内从一组表中检索结果。动态表名称上的表连接
该数据库似乎创建了名为monitorCounterLog的新表,并在结尾处显示日期,然后删除30天以外的任何内容。
EG: dbo.monitorCounterLog20140903用于当天在我所在位置的日期。然后将这些日期向后重复30天。
EG:
dbo.monitorCounterLog20140903
dbo.monitorCounterLog20140902
dbo.monitorCounterLog20140901
dbo.monitorCounterLog20140831
dbo.monitorCounterLog20140830
等等......
我需要实现类似于以下:
SELECT *
FROM monjtorCounterLog[30_days_worth_of_table_dates] ml
INNER
JOIN machNameTab mn
ON mn.agentGuid = ml.agentGuid
WHERE [stuff...]
这跨越30桌需要工会的所有数据。
我得到了一些动态SQL(没有这方面的经验),但是我不知道如何根据需要将它加入到其他表中。
DECLARE @mCounterLog NVARCHAR(MAX)
SELECT @mCounterLog = STUFF((SELECT ' UNION ALL SELECT * FROM ' +st.name AS [text()]
FROM sys.tables st
WHERE (st.name LIKE 'monitorCounterLog[0-9]%' OR st.name = 'monitorCounterLog')
FOR XML PATH('')), 1, 11, '');
EXEC sp_executesql @mCounterLog
我可以在这里做些什么来实现动态SQL所需的连接?
将动态SQL插入临时表中,然后加入结果,还是有更好的方法来解决这个问题?
使用正确的语法丢失很少。
太棒了,谢谢!这就是我需要的。 – Jason 2014-09-03 05:58:43