如果我想每天运行报告并将报告的日期存储为列标题之一。这可能吗?
示例输出(计算当天员工的活动):
SELECT EMPLOYEE_NAME AS EMPLOYEE, COUNT(ACTIVITY) AS "Activity_On_SYSDATE" FROM EMPLOYEE_ACCESS GROUP BY EMPLOYEE_NAME;
Employee Activity_On_17042016
Jane 5
Martha 8
Sam 11
答案 0 :(得分:0)
您希望使用数据存储工具执行报告作业。数据库(和SQL)用于存储和检索数据,而不是用于创建报告。有一些特殊的工具可用于创建报告。
在数据库设计中,以表格或列名称编码实际数据是非常不健康的。作为名称(以及它们的使用方式)的一部分,表名和列名都不应具有员工ID,日期或任何其他实际数据。实际数据应该只在字段中,而字段又在不同表中的列中。
根据您的描述,您的基表应包含员工,活动和日期的列。然后在任何一天,如果你想要计算"当前"那天,你可以用
查询select employee, count(activity) ct
from table_name
where activity_date = SYSDATE
group by employee
如果您愿意,还可以加入" activity_date"输出中的列,将显示报告的运行日期。
请注意,我假设了" date"的列名。是" activity_date。"在我使用的输出中" ct"对于列别名,不是"计数。" DATE和COUNT是保留字,如SYSTIME,您不应将它们用作表或列名。您可以将它们用作别名,只要您不需要在SQL中的任何其他位置引用这些别名,但它仍然是一个非常糟糕的主意。想象一下,你需要引用一个列(按名称或别名),名称或别名是SYSDATE。这样的where子句意味着什么?
where sysdate = sysdate
你看到了问题吗?
另外,我无法从您的问题中说出 - 您是否考虑将这些报告存回数据库?到底是什么?最好只存储一个查询并在需要时运行它(并使" activity_date"您想要计数)作为输入参数,这样您就可以随时运行任何日期的查询未来。只要正确维护基表,就不需要将实际的每日报告存储在数据库中。
祝你好运!