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