【问题标题】:How to add an incrementing integer in every execution of a select query?如何在每次执行选择查询时添加递增整数?
【发布时间】:2017-01-21 20:24:49
【问题描述】:

我有一个Select 查询来获取格式为 (ddmmyy) 的日期,并且我正在尝试在 'yy' 之后连接(假设是增量的)整数/数字。

例如我想得到这个:

"21011701" 

其中 dd=21;mm=01;yy=17;integer=01。

我将在 Crystal Report 中使用此查询,并且每次生成 Crystal Report 时,该整数都必须像 批号一样递增。

提前感谢您的帮助。

Declare @bn nvarchar(max) 
    SET @bn = '01'  

SELECT REPLACE(CONVERT(CHAR(10), GETDATE(), 3), '/', '') + @bn BatchDate FROM TABLE

【问题讨论】:

  • 这个incemental integer number是否以01开头的每个日期?每个报告都有自己的增量集吗?您何时需要它(立即或稍后)?你在哪里需要它(打印在报告上)?是否有并行操作(多用户调用同一报告)?我认为最简单的方法是在表格中为每个批次插入一个新行,然后使用 ROW_NUMBER() OVER(PARTION BY ReportID,Date ORDER BY RowID) 之类的东西来获取运行编号...
  • 我在这份报告中看到的棘手部分是,一旦我们的两个 SAP 用户生成了报告,就增加 01(是的,它必须从 01 开始)。因此,如果用户 1 现在生成此报告,则必须为 01。如果用户 2 生成另一个报告,则为 02,依此类推。生成此报告的时间间隔为每月两次。如果有任何编程技巧来增加这个整数而不将值插入数据库,我正在寻找什么。我的想法是将当前整数值存储在某处。

标签: sql sql-server-2008 crystal-reports-2008


【解决方案1】:

这是你想要的吗?

SELECT (REPLACE(CONVERT(CHAR(10), GETDATE(), 3), '/', '') +
        RIGHT('00' + CAST(ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) as VARCHAR(255)), 2)
       ) as BatchDate
FROM TABLE;

【讨论】:

  • 不,不是那样的。这部分查询将位于报表标题处,因此将显示一次。
猜你喜欢
  • 1970-01-01
  • 2011-03-13
  • 1970-01-01
  • 2023-03-11
  • 2017-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-20
相关资源
最近更新 更多