您正在尋找做一個彙報工作與數據存儲工具。數據庫(和SQL)用於存儲和檢索數據,而不是用於創建報告。有創建報告的特殊工具。
在數據庫設計中,對錶或列名稱中的實際數據進行編碼是非常不健康的。作爲名稱(及其使用方式)的一部分,表名和列名都不應該有,員工ID,日期或其他任何實際數據位。實際數據只應在字段中,而字段又在不同表格的列中。
從你所描述的,你的基表應該有員工,活動和日期的列。然後在某一天,如果你想在「當前」天數,你可以用
select employee, count(activity) ct
from table_name
where activity_date = SYSDATE
group by employee
如果你想查詢,你也可以在輸出中包含了「activity_date」一欄,將顯示報告的運行日期。
請注意,我假定「日期」的列名稱爲「activity_date」。而在輸出中,我使用「ct」作爲列別名,而不是「count」。 DATE和COUNT是保留字,如SYSTIME,您不應將它們用作表或列名稱。只要不需要在SQL中的其他任何地方引用這些別名,就可以將它們用作別名,但這仍然是一個非常糟糕的主意。想象一下,你需要引用一個列(通過名稱或別名),名稱或別名是SYSDATE。這裏的where子句是什麼意思?
where sysdate = sysdate
您是否看到問題?
此外,我不能告訴你的問題 - 你是否想把這些報告存回數據庫?爲了什麼目的?最好只存儲一個查詢,並在需要時運行它(並將您希望計數的「activity_date」作爲輸入參數),以便您可以在將來的任何時間對任何日期運行查詢。只要基本表得到適當的維護,就不需要將實際的日常報告存儲在數據庫中。
祝你好運!
它可以用作別名,但不會按照您期望的方式進行外推,而只會保留爲單詞「SYSDATE」 –
我看到SYSDATE本身無法使用。有沒有辦法獲得當前的日期,然後不使用SYSDATE? – user3144072
您可以動態構建查詢,以便別名是動態的。具體怎麼做取決於我們在談論什麼類型的報告。你在使用報告應用程序嗎?使用「SQL * Plus」生成文本報告?還有別的嗎? –