如何在选择查询中增加 sql 计数器
Posted
技术标签:
【中文标题】如何在选择查询中增加 sql 计数器【英文标题】:how to increment sql counter in select query 【发布时间】:2016-08-29 08:00:22 【问题描述】:我想创建一个列“计数器”,每当我们运行 select 语句时,它都会增加计数。
假设我今天运行选择查询。我的输出将如下所示。
name | employeeid | counter
raj 123 1
steve 124 1
brad 125 1
明天当我运行查询时,旧记录的计数器应该会增加
name | employeeid | counter
raj 123 2
steve 124 2
brad 125 2
pitt 126 1
在我运行计数器的第 3 天,对于上述旧记录,计数器应该会增加。
name | employeeid | counter
raj 123 3
steve 124 3
brad 125 3
pitt 126 2
camie 127 1
从由 doj desc 排序的 mytable 中选择 name、employeeid、count(name) over (partition by name) 计数器
【问题讨论】:
A SELECT 不更新表数据。 每个名字的每一天都有单独的记录吗? 如果一天内运行两次 select 语句会怎样? 是的,每天(大部分)都会添加每条记录,有时会在特定日期添加两条或更多条记录。有时不会添加任何记录。 select 语句每天只运行一次@Pirate 【参考方案1】:如果您假设查询每天执行一次,那么您的计数器基本上是从创建记录到今天 + 1 之间的天数。假设创建日期存储在 creation_date 列中。你可能需要这样的东西:
select name, employeeid,
trunc(sysdate - creation_date) + 1 counter
from your_table
【讨论】:
【参考方案2】:为此,您必须使用触发器,但问题是您不能在 select
语句上使用触发器。
但它可以通过使用处理程序来实现 PL/SQL 过程——它将处理我们想要触发的选择事件,然后我们可以定义与我们的处理程序关联的细粒度审计策略。
参考:Click here
希望它会有所帮助。
【讨论】:
以上是关于如何在选择查询中增加 sql 计数器的主要内容,如果未能解决你的问题,请参考以下文章
如何将任何给定的 SQL/HQL 选择查询动态转换为等效计数查询?