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
	
 

评论