Oracle 是否可以将SYSDATE用作列别名?

Oracle 是否可以将SYSDATE用作列别名?,oracle,alias,sysdate,Oracle,Alias,Sysdate,如果我想每天运行一个报告,并将报告的日期存储为列标题之一。这可能吗 输出示例(计算当天员工的活动): 您希望使用数据存储工具完成报告工作。数据库(和SQL)用于存储和检索数据,而不是创建报告。有专门的工具用于创建报告 在数据库设计中,将实际数据编码为表名或列名是非常不健康的。表名和列名都不应包含员工id、日期或任何其他实际数据位,作为名称的一部分(以及它们的使用方式)。实际数据应该只在字段中,而字段又在不同表的列中 根据您的描述,您的基表应该包含employee、activity和date列。然

如果我想每天运行一个报告,并将报告的日期存储为列标题之一。这可能吗

输出示例(计算当天员工的活动):


您希望使用数据存储工具完成报告工作。数据库(和SQL)用于存储和检索数据,而不是创建报告。有专门的工具用于创建报告

在数据库设计中,将实际数据编码为表名或列名是非常不健康的。表名和列名都不应包含员工id、日期或任何其他实际数据位,作为名称的一部分(以及它们的使用方式)。实际数据应该只在字段中,而字段又在不同表的列中

根据您的描述,您的基表应该包含employee、activity和date列。然后,在任何给定的一天,如果您想要“当前”一天的计数,您可以使用

select   employee, count(activity) ct 
from     table_name  
where    activity_date = SYSDATE 
group by employee
如果需要,还可以在输出中包含“activity_date”列,该列将显示报告运行的日期

请注意,我假设“date”的列名是“activity\u date”。在输出中,我使用“ct”作为列别名,而不是“count”。date和count是保留字,如SYSTIME,您不应该将它们用作表名或列名。您可以将它们用作别名,只要您不需要在SQL中的任何其他地方引用这些别名,但这仍然是一个非常糟糕的主意。假设您曾经需要引用一列(按名称或别名),而名称或别名是SYSDATE。像这样的where子句是什么意思

where sysdate = sysdate
你看到问题了吗

另外,我无法从你的问题中判断-你是否考虑将这些报告存储回数据库?为了什么?最好只存储一个查询,并在需要时运行它(并将需要计数的“activity_date”设置为输入参数),这样您就可以在将来的任何时间针对任何日期运行查询。只要正确维护了基表,就不需要在数据库中存储实际的每日报告


祝你好运

您希望使用数据存储工具完成报告工作。数据库(和SQL)用于存储和检索数据,而不是创建报告。有专门的工具用于创建报告

在数据库设计中,将实际数据编码为表名或列名是非常不健康的。表名和列名都不应包含员工id、日期或任何其他实际数据位,作为名称的一部分(以及它们的使用方式)。实际数据应该只在字段中,而字段又在不同表的列中

根据您的描述,您的基表应该包含employee、activity和date列。然后,在任何给定的一天,如果您想要“当前”一天的计数,您可以使用

select   employee, count(activity) ct 
from     table_name  
where    activity_date = SYSDATE 
group by employee
如果需要,还可以在输出中包含“activity_date”列,该列将显示报告运行的日期

请注意,我假设“date”的列名是“activity\u date”。在输出中,我使用“ct”作为列别名,而不是“count”。date和count是保留字,如SYSTIME,您不应该将它们用作表名或列名。您可以将它们用作别名,只要您不需要在SQL中的任何其他地方引用这些别名,但这仍然是一个非常糟糕的主意。假设您曾经需要引用一列(按名称或别名),而名称或别名是SYSDATE。像这样的where子句是什么意思

where sysdate = sysdate
你看到问题了吗

另外,我无法从你的问题中判断-你是否考虑将这些报告存储回数据库?为了什么?最好只存储一个查询,并在需要时运行它(并将需要计数的“activity_date”设置为输入参数),这样您就可以在将来的任何时间针对任何日期运行查询。只要正确维护了基表,就不需要在数据库中存储实际的每日报告


祝你好运

它可以用作别名,但它不会按照您期望的方式进行外推,只会保留为“SYSDATE”一词。我看到SYSDATE本身无法使用。有没有一种方法可以在不使用SYSDATE的情况下获取当前日期?您可以动态构建查询,以便别名是动态的。具体如何做将取决于我们所讨论的报告类型。您正在使用报表应用程序吗?使用
SQL*Plus
生成文本报告?还有什么?没有报告应用程序。它直接来自通过oracle的Select语句“directl…through oracle”并没有告诉我们您正在使用哪个客户端;SQL*Plus?SQL开发者?顶还有别的吗?这会一直通过同一个客户端运行吗?基本上,您不能通过普通SQL来实现这一点,但您可以(ab)使用客户端的功能来实现。它可以用作别名,但不会像您期望的那样进行外推,而是保留为“SYSDATE”一词。我看到SYSDATE本身无法使用。有没有一种方法可以在不使用SYSDATE的情况下获取当前日期?您可以动态构建查询,以便别名是动态的。具体如何做将取决于我们所讨论的报告类型。您正在使用报表应用程序吗?使用
SQL*Plus
生成文本报告?还有什么?没有报告应用程序。它直接来自通过oracle的Select语句“directl…through oracle”并没有告诉我们您正在使用哪个客户端;SQL*Plus?SQL开发者?顶还有别的吗?这会一直通过同一个客户端运行吗?基本上,您不能通过普通SQL来实现这一点,但您可以(ab)使用客户端的功能来实现这一点。