用SQL方法生成单据号

本文介绍了如何在SQL中自动创建格式化的单据号,例如06AGAH000122和06AGAH002333。通过声明变量并设置年月、帐套字头和当前最大单据号,然后根据数值长度添加前导零,确保码长一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SQL中自動生成單據號的做法 :
如:
傳入122,2333
會生成:
06AGAH000122
06AGAH002333
(注意:碼長一致性)

--找帐套字头号
DECLARE @IH char(1)
--SELECT @IH = LEFT(IncID,1) FROM accounts WHERE ID = @Incom
set @IH = 'E'
--编号年月部分
DECLARE @YM char(6)
SET @YM = CONVERT(char(6),GETDATE(),12)
--单据字头
DECLARE @DJHH char(8)
SET @DJHH = @IH + 'E' + @YM
DECLARE @MNO INT        --当天最大的单据号(数值)
SET @MNO = 33333
--select TOP 1 @MNO = CONVERT(int,RIGHT(DJH,4))+1 from Orders where left(DJH,8) = @DJHH and incom = @Incom Orders by DJH desc
DECLARE @DJH char(12)
--扩充成4位十进制编号(最大可显示9999)
print  @MNO
IF @MNO < 9999
  IF @MNO < 999
    IF @MNO < 99
      IF @MNO < 9
        SET @DJH = @DJHH + '000' + CONVERT(char(1),@MNO)
      ELSE
        SET @DJH = @DJHH + '00' + CONVERT(char(2),@MNO)
    ELSE
      SET @DJH = @DJHH + '0' + CONVERT(char(3),@MNO)
  ELSE
    SET @DJH = @DJHH + CONVERT(char(4),@MNO)
ELSE
  SET @DJH = @DJHH + '9999'
print  @DJH 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值