我想借助SQL Server中的两列Year和CompanyId(组合键(Year,CompanyId,Invoiceno))来生成服装唯一的发票。
我可以使用自定义登录来生成此唯一密钥,但是如何处理多个请求是否同时插入记录。
我的期望记录如下:
InvoiceId | Year | CompanyId | InvoiceNo 1 | 2018 | 1 | IN0001 2 | 2018 | 1 | IN0002 3 | 2018 | 2 | IN0001 3 | 2018 | 3 | IN0001 4 | 2019 | 1 | IN0001 5 | 2019 | 1 | IN0002 6 | 2019 | 2 | IN0001
谢谢!
答案 0 :(得分:1)
一个人可以使用ROW_NUMBER来获取可用于形成这样的InvoiceNo的数字。
SELECT
InvoiceId, [Year], CompanyId,
'IN'+ RIGHT(
CONCAT(
REPLICATE('0',3),
ROW_NUMBER() OVER (PARTITION BY [Year], CompanyId ORDER BY InvoiceId)
) ,4) AS InvoiceNo
FROM YourInvoiceTable
ORDER BY InvoiceId
在 db <>小提琴here
上进行测试