正如評論所說,最好將它組織成一張表,然後添加一個日期列,以便您可以查看每行何時添加。您甚至可以將date_created
列的默認值設置爲getdate()
。
要將所有數據放在一起,請將UNION
運算符連同對新的更好的表的insert語句一起使用。
CREATE TABLE Better_Table (Column_1 <type>, Column_2 <type>, ..., Date_Created DateTime2(7) Default GETDATE())
GO
INSERT INTO Better_Table (Column_1, Column_2, ...)
SELECT *, '2016/08/22' FROM Table_20160822
UNION
SELECT *, '2016/08/23' FROM Table_20160823
...
一旦你做到了這一點您的查詢就會簡單得多:
SELECT Column_1, COUNT(Column_3)
FROM Better_Table
WHERE date_created >= '2016/08/01'
AND date_created < '2016/09/01'
GROUP BY Column_1
雖然你仍然可以做到這一點在DB當前狀態由group by
查詢中使用union運算符。它看起來像這樣:
SELECT a.column_1, COUNT(a.column_3)
FROM (
SELECT column_1, Column_3
FROM Table_20160822
UNION ALL
SELECT column_1, Column_3
FROM Table_20160823
) a
GROUP BY a.Column_1
只需將其展開到需要抓取的表格即可。
不同的表爲不同的日期......聽起來像一個壞主意。 (有一張表,添加一個日期列!) – jarlh
同意@jarlh:這是一個**可怕的糟糕的設計,並且會讓你的生活成爲數據庫開發者一個活生生的地獄!修復設計 - 不要浪費時間試圖「優化」訪問這個混亂.... –