【问题标题】:how to increment sql counter in select query如何在选择查询中增加 sql 计数器
【发布时间】: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

标签: sql oracle


【解决方案1】:

如果您假设查询每天执行一次,那么您的计数器基本上是从创建记录到今天 + 1 之间的天数。假设创建日期存储在 creation_date 列中。你可能需要这样的东西:

select name, employeeid, 
       trunc(sysdate - creation_date) + 1 counter 
from your_table

【讨论】:

    【解决方案2】:

    为此,您必须使用触发器,但问题是您不能在 select 语句上使用触发器。

    但它可以通过使用处理程序来实现 PL/SQL 过程——它将处理我们想要触发的选择事件,然后我们可以定义与我们的处理程序关联的细粒度审计策略。

    参考:Click here

    希望它会有所帮助。

    【讨论】:

      猜你喜欢
      • 2016-08-24
      • 1970-01-01
      • 2019-12-30
      • 2021-07-06
      • 2018-03-04
      • 2011-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多