SQL校验优化

 

我的思路只能查当前的:

----校验此行订单是否已导入,若已导入则提示订单号并Return

--        IF EXISTS (SELECT 1 FROM DOC_Order_Header b LEFT JOIN @tblData a

--                         ON

--                         a.ConsigneeID = b.ConsigneeID

--                         AND a.ConsigneeID = b.ConsigneeID

--                               AND a.SOReference1 = b.SOReference1

--                               AND a.H_EDI_01 = b.H_EDI_01

--                               AND a.OrderTime = b.OrderTime

--                               AND a.H_EDI_02 = b.H_EDI_02

--                               AND a.HeaderNotes = b.Notes

--                               WHERE b.CustomerID = 'KKKL'

--                         )

--        BEGIN

--        SET @Msg = @Msg + '订单号:' +  @sSOReference1 + '已存在,请检查数据!'

--        RETURN -1                

--        END

优化思路:

 

--校验客户是否存在,返回所有不存在的客户编号:        

  SET @sConsigneeID = NULL

  SELECT @sConsigneeID = ISNULL(@sConsigneeID + ',', '') + ConsigneeID

  FROM (

    SELECT DISTINCT a.ConsigneeID AS ConsigneeID

    FROM @tblAllData a

      LEFT JOIN BAS_Customer co ON a.ConsigneeID = co.CustomerID AND co.Customer_Type = 'CO'

    WHERE

      co.CustomerID IS NULL ) a

  IF @sConsigneeID <> ''

    SET @Msg = @Msg + '客户档案不存在:' + @sConsigneeID

   

  --校验订单是否存在,返回所有已存在的订单号

    SET @sSOReference1 = NULL

  SELECT @sSOReference1 = ISNULL(@sSOReference1 + ',', '') + SOReference1

  FROM (

    SELECT DISTINCT a.SOReference1 AS SOReference1

    FROM @tblAllData a

      LEFT JOIN DOC_Order_Header oh ON a.SOReference1 = oh.SOReference1 AND oh.CustomerID = 'KKKL'

    WHERE

      oh.SOReference1 IS NOT NULL ) a

  IF @sSOReference1 <> ''

    SET @Msg = @Msg + '订单已存在:' + @sSOReference1

Ps 创建临时表  CREATE TABLE #TEMP 加两个##表示系统级别的临时表

转载于:https://www.cnblogs.com/Nagisa-Saku/p/5706508.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值