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

评论