【问题标题】:Insert duplicate record with max + 1 entry_sr_no插入最大 + 1 个 entry_sr_no 的重复记录
【发布时间】:2016-12-26 04:54:27
【问题描述】:

我有一个 SP,它返回给我相应 文档编号 的最大条目编号。

现在我想要的是,我想在 inward_doc_tracking_trl 表中插入相同的记录,最大 + 1 entry_sr_no

说吧,

doc_noMax_Entry_Srno = IW/16/5694 为 3, 然后在trl 表中插入相同的Max_Entry_Srno 应该是4。

这是我的 SP

 ALTER procedure set_auto_action  
       as   
        begin         
             select hdr.mkey, hdr.doc_no, MAX(trl.entry_sr_no) as Max_Entry_Srno  
              from inward_doc_tracking_hdr hdr  
               JOIN inward_doc_tracking_trl trl  
             ON(hdr.mkey = trl.ref_mkey)  
              where hdr.status_flag     not in (5,13)   
             and trl.U_Datetime < DATEADD(DAY, -1, GETDATE())       
             GROUP BY hdr.mkey, hdr.doc_no  
       end

另见SP返回结果的截图

inward_doc_tracking_trl的表格脚本也在下面:-

CREATE TABLE [dbo].[Inward_Doc_Tracking_Trl](
[Mkey] [numeric](18, 0) NOT NULL,
[Entry_Sr_No] [numeric](4, 0) NOT NULL,
[N_UserMkey] [numeric](10, 0) NULL,
[N_Department] [numeric](10, 0) NULL,
[CStatus_Flag] [numeric](8, 0) NOT NULL,
[Remarks] [varchar](500) NULL,
[CUser_ID] [numeric](10, 0) NOT NULL,
[U_Datetime] [datetime] NOT NULL,
[NStatus_Flag] [numeric](10, 0) NOT NULL, 
[Delete_Flag] [char](1) NULL,
[CDept_Id] [numeric](10, 0) NOT NULL,
[Ref_Mkey] [numeric](18, 0) NULL,
[No_Of_Days] [int] NULL,
[Approved_Amount] [float] NULL,
[Chq_No] [varchar](50) NULL,
[Chq_dated] [datetime] NULL,
[Chq_Bank] [varchar](40) NULL,
[Chq_Amount] [float] NULL,
[Vendor_MKey] [int] NULL,
[Vendor_Comp_Mkey] [int] NULL,
[Project_Mkey] [numeric](10, 0) NULL,
[Program_mkey] [numeric](10, 0) NULL,
[Payment_MKey] [int] NULL,
[Due_Date] [datetime] NULL,
[Updated_Remarks] [varchar](500) NULL,
[Updated_Bill_no] [varchar](27) NULL,
[Updated_Bill_Date] [datetime] NULL,
[Updated_Bill_Amt] [float] NULL,
[Party_Name] [varchar](80) NULL,
[Acc_mkey] [numeric](10, 0) NULL,
[TotalDeductions] [float] NULL,
[Broker_Mkey] [numeric](10, 0) NULL,
[Customer_Mkey] [numeric](10, 0) NULL,
[Payable_Amt] [float] NULL,
[Balance_Amt] [float] NULL,
[Receipt_No] [varchar](50) NULL,
[Po_No] [varchar](50) NULL,
[Bill_No] [varchar](50) NULL,
[Disp_through] [varchar](50) NULL,
[Disp_Through_Name] [varchar](100) NULL,
[Site_Id] [int] NULL,
   CONSTRAINT [PK_Inward_Doc_Tracking_Trl_1] PRIMARY KEY CLUSTERED 
  (
   [Mkey] ASC,
   [Entry_Sr_No] ASC
  )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY =       OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

注意:添加 max+ 1 sr_no 的重复行的原因是让用户知道该用户收到了文档

【问题讨论】:

    标签: sql sql-server stored-procedures sql-server-2005


    【解决方案1】:

    联合所有的帮助

    ---this returns dupe
        select hdr.mkey, hdr.doc_no, MAX(trl.entry_sr_no) as Max_Entry_Srno  
                      from inward_doc_tracking_hdr hdr  
                       JOIN inward_doc_tracking_trl trl  
                     ON(hdr.mkey = trl.ref_mkey)  
                      where hdr.status_flag     not in (5,13)   
                     and trl.U_Datetime < DATEADD(DAY, -1, GETDATE())       
                     GROUP BY hdr.mkey, hdr.doc_no  
    
        union all
    ---dupe+1
        select hdr.mkey, hdr.doc_no, MAX(trl.entry_sr_no)+1 as Max_Entry_Srno  
                      from inward_doc_tracking_hdr hdr  
                       JOIN inward_doc_tracking_trl trl  
                     ON(hdr.mkey = trl.ref_mkey)  
                      where hdr.status_flag     not in (5,13)   
                     and trl.U_Datetime < DATEADD(DAY, -1, GETDATE())       
                     GROUP BY hdr.mkey, hdr.doc_no  
    

    【讨论】:

    • 它会在inward_doc_tracking_trl 中插入最大+1 sr_no 的记录吗??
    • 如果我想检查trl表,那么如何检查呢?
    • @stack: 你需要使用这个sp来插入你想要的东西
    猜你喜欢
    • 2015-03-31
    • 1970-01-01
    • 1970-01-01
    • 2018-10-22
    • 2014-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多