正文

sp1_SendFlightEmail_select2012-06-26 13:31:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/edwardguo/53537.html

分享到:

USE [MarketingDB]
GO

/****** Object:  StoredProcedure [dbo].[sp1_SendFlightEmail_select]    Script Date: 06/26/2012 13:21:00 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

/*
Subsystem  : 
Sp name    : [dbo].[sp1_SendFlightEmail_select]
Database   : marketingDB
Description: 
DB access  : 
DB update  : 
Input      : 
Dependency : 

##########
Change Log
##########
   Date     Changer         Description
--------------------------------------------------------------------------------------
2010-07-23 leil   [85981]酒推机订单选择
2010-11-10   LEIL           [98071]酒推机订单选择
2010-12-23   LEIL           [128102]酒推机订单选择
2011-04-07  fxia   [114662]a、订单提交后10分钟及时处理
         b、系统判断客户是否预订相同城市的机票
                  的时间为负24小时 
         c、增加单独的城市判断,即判断城市是否发机票推荐          
--------------------------------------------------------------------------------------
*/
    CREATE PROCEDURE [dbo].[sp1_SendFlightEmail_select]
     @diffhours int,  ---时间段,单位小时
     @PrepayType varchar(50)=NULL, ---支付方式
     @lowerlimit INT, ---时间段下限
     @upperlimit INT, ---时间段上限
     @upperlimit1 INT ---时间段上限1
     AS

     DECLARE @retcode int, @rowcount int
     SET NOCOUNT ON
     SET LOCK_TIMEOUT 10000000

     IF @PrepayType!=''
     SELECT  DISTINCT
     TOP (100) PERCENT
      ho.OrderId, ho.Uid,
      ho.OrderDate,
      ho.OrderStatus,
      ho.CityId,
      ho.IsSendMail ,
     ce.IsSendEmail,
     ho.ContactEmail,
     ho.ContactName,
     ho.MobilePhone,
     ho.PrepayType,
     ho.CreditCardType,
     ce.district AS DistrictId,
     ce.PromoteId,
     ce.CityName,
     ce.Citycode,
     ce.ename,
     ce.CreatedBy,
     ce.IsFlightSendEmail,
        CASE ls.uid WHEN ls.uid THEN 'T' ELSE 'F' end AS isInLS,--ISNULL(ls.UID,'F') AS isInLS,
      CASE lC.uid WHEN lC.uid THEN 'T' ELSE 'F' end AS isInLC
     FROM
     dbo.Hotel_Order AS ho WITH (nolock)
     INNER JOIN
     dbo.V_City AS ce WITH (nolock)
     ON ho.CityId = ce.City AND ce.CreatedBy IS NOT NULL AND ce.IsFlightSendEmail=1
     LEFT JOIN
     (SELECT UID FROM dbo.Log_Succeed  WITH(NOLOCK) WHERE  CreatedOn>=DATEADD(DAY,-15,GETDATE()) AND  TemplateId=201 ) ls ON ls.UID=ho.Uid
     LEFT JOIN
     (SELECT UID FROM dbo.Log_Contrast  WITH(NOLOCK) WHERE  CreatedOn>=DATEADD(DAY,-15,GETDATE()) AND  TemplateId=201 ) lc ON lc.UID=ho.Uid
     WHERE 
     (ho.IsSendMail = 0)
     AND
     ho.OrderDate<DateAdd(mi,@upperlimit,GetDate()) -- 0
     and
     ho.OrderDate>=DateAdd(mi,@lowerlimit,GetDate())  -- -10分钟
     and  
     NOT EXISTS(
     SELECT 1 FROM
      dbo.Flight_Order fo1 WITH(nolock) JOIN
      dbo.Flight_SubOrder fso1  WITH(nolock)
      ON fo1.OrderID=fso1.OrderId
      WHERE fo1.UID=ho.Uid
      AND fo1.OrderDate >=DATEADD(mi,@upperlimit1,ho.orderDate) --24
      AND fo1.OrderDate <=DATEADD(mi,@upperlimit,ho.orderDate) --0
      AND fso1.ACityID=ho.CityId
     )
     and
     ho.PrepayType=@PrepayType
     
     ORDER BY ho.CITYID
     ELSE
     SELECT  DISTINCT
     TOP (100) PERCENT
      ho.OrderId, ho.Uid,
      ho.OrderDate,
      ho.OrderStatus,
      ho.CityId,
      ho.IsSendMail,  
     ho.ContactEmail,
     ho.ContactName,
     ho.MobilePhone,
     ho.PrepayType,
     ho.CreditCardType,
     ce.district AS DistrictId,
     ce.PromoteId,
     ce.CityName,
     ce.Citycode,
     ce.ename,
     ce.CreatedBy,
     ce.IsFlightSendEmail,
       CASE ls.uid WHEN ls.uid THEN 'T' ELSE 'F' end AS isInLS,--ISNULL(ls.UID,'F') AS isInLS,
      CASE lC.uid WHEN lC.uid THEN 'T' ELSE 'F' end AS isInLC     
     FROM
     dbo.Hotel_Order AS ho WITH (nolock)
     INNER JOIN
     dbo.V_City AS ce WITH (nolock)
     ON ho.CityId = ce.City AND ce.CreatedBy IS NOT NULL AND ce.IsFlightSendEmail=1
      LEFT JOIN
     (SELECT UID FROM dbo.Log_Succeed  WITH(NOLOCK) WHERE  CreatedOn>=DATEADD(DAY,-15,GETDATE()) AND  TemplateId=201 ) ls ON ls.UID=ho.Uid
     LEFT JOIN
     (SELECT UID FROM dbo.Log_Contrast  WITH(NOLOCK) WHERE  CreatedOn>=DATEADD(DAY,-15,GETDATE()) AND  TemplateId=201 ) lc ON lc.UID=ho.Uid
     
     WHERE    
     (ho.IsSendMail = 0)
     AND
     ho.OrderDate<DateAdd(mi,@upperlimit,GetDate()) -- 0 mi
     and
     ho.OrderDate>=DateAdd(mi,@lowerlimit,GetDate())  -- -10 mi
     and 
     NOT EXISTS(
     SELECT 1 FROM
      dbo.Flight_Order fo1 WITH(nolock) JOIN
      dbo.Flight_SubOrder fso1  WITH(nolock)
      ON fo1.OrderID=fso1.OrderId
      WHERE fo1.UID=ho.Uid
      AND fo1.OrderDate >=DATEADD(mi,@upperlimit1,ho.orderDate) -- -24 hour
      AND fo1.OrderDate <=DATEADD(mi,@upperlimit,ho.orderDate) --0 mi
      AND fso1.ACityID=ho.CityId
     )
     ORDER BY ho.CITYID
GO


 

阅读(249) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册