【问题标题】:SQL Server counter column that increments when a new record has been added添加新记录时递增的 SQL Server 计数器列
【发布时间】:2015-10-29 18:59:40
【问题描述】:

我正在处理一个需要跟踪每天运行的报告的存储过程。如果报告已运行多次,我需要一个在每次运行报告时递增的列。我不确定如何在不明确命名要跟踪的每个报告的情况下使其跟踪 ReportID 或 ReportName。使用 SQL Server 2012,我们将表称为 ProcessMaster。

Time  ReportID   ReportName  (Increment Column)
----  --------   ----------  ------------------
7:00    2145      Job1               1
7:30    2145      Job1               2
7:30    2146      Another            1
8:00    2145      Job1               3
8:30    2146      Another            2

【问题讨论】:

  • 只需要自己更新列。
  • 您可以在 insert 上创建触发器,并在触发器中手动更新 no
  • 查看 SQL Server SEQUENCE

标签: sql tsql sql-server-2012 increment


【解决方案1】:

通过动态生成排名,可以选择根本没有该列:

SELECT *, 
  ROW_NUMBER() OVER (PARTITION BY ReportId ORDER BY Time) as IncrementColumn
FROM ProcessMaster

如果您希望存储该字段,您可以选择:

  • 编写触发器
  • 应用层的增量

【讨论】:

  • 我会试试这个。谢谢。
猜你喜欢
  • 2020-02-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-20
  • 2015-03-07
  • 1970-01-01
  • 2014-07-20
  • 1970-01-01
相关资源
最近更新 更多