【问题标题】:Creating repeated sequential number based on parameter?根据参数创建重复的序号?
【发布时间】:2021-05-10 12:03:26
【问题描述】:

我实际上是在尝试根据发票屏幕中的参数和发票编号为 SAP Business one 中的发票创建唯一的条形码。

例如,我将拥有的固定数据是“Invoice Number”,带有一个名为“Number Of Items”的参数

如果参数是10,我希望SQL查询返回...

123456 001 010
123456 002 010
123456 003 010
123456 004 010
123456 005 010

等等。这实际上会为我创建 10 个唯一编号,然后我可以将其用于该发票的一系列条形码? 它不需要插入到表中,只需要能够计算中间的动态值即可。

我要查询的值是

OINV.InvoiceNumber, OINV.NumberOfParcels FROM OINV

非常感谢

安迪

【问题讨论】:

  • 用您正在使用的数据库标记您的问题。
  • 你在用什么rdbms
  • 这是 SAP Business one,我使用的是 MsSQL studio 17
  • “MsSQL 工作室 17”?那不是 RDBMS。 *也许你的意思是SQL Server management Studio,它是SQL Server的IDE?

标签: sql sql-server database sapb1


【解决方案1】:

如果你有一个数字表,你可以这样做:

DECLARE @SomeNumber INT = 123456,
        @N          INT = 10;

SELECT
  SomeNumber = @SomeNumber,
  Col1       = STUFF('000',3+1-LEN(t.N),LEN(t.N),t.N),
  Col2       = STUFF('000',3+1-LEN(@N),LEN(@N),@N)
FROM  Numbers AS t
WHERE t.N <= @N;

如果你不这样做,你可以使用fnTally。代码如下所示:

SELECT 
  SomeNumber = @SomeNumber,
  Col1       = STUFF('000',3+1-LEN(t.N),LEN(t.N),t.N),
  Col2       = STUFF('000',3+1-LEN(@N),LEN(@N),@N)
FROM   dbo.fnTally(1,@N) AS t;

两个查询都返回:

SomeNumber  Col1    Col2    
----------- ------- ------- 
123456      001     010     
123456      002     010     
123456      003     010     
123456      004     010     
123456      005     010     
123456      006     010     
123456      007     010     
123456      008     010     
123456      009     010     
123456      010     010     

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-27
    • 2021-08-10
    • 1970-01-01
    • 1970-01-01
    • 2020-04-24
    • 2018-06-28
    • 1970-01-01
    相关资源
    最近更新 更多