@BeginTime datetime,
@EndTime datetime,SET @SQLString = '
SELECT '
+@QuerryStr+ '
FROM
ContactHistory c
WHERE
(NOT EXISTS(SELECT 1 FROM ContactHistory WHERE CustomerEmployeeID = c.CustomerEmployeeID AND 记录时间 > c.记录时间))
AND
客户注册时间 >= '+CAST(@BeginTime AS VARCHAR)+ '
AND
客户注册时间 < '+CAST(@EndTime AS VARCHAR)+ '
ORDER BY 客户注册时间 DESC'

解决方案 »

  1.   

    --这样呢?
    SET @SQLString = '
    SELECT '
    +@QuerryStr+ '
    FROM
    ContactHistory c
    WHERE
    (NOT EXISTS(SELECT 1 FROM ContactHistory WHERE CustomerEmployeeID = c.CustomerEmployeeID AND 记录时间 > c.记录时间))
    AND
    客户注册时间 >= '''+convert(VARCHAR(10),@BeginTime,120)+ '''
    AND
    客户注册时间 < '''+convert(VARCHAR(10),@EndTime,120)+ '''
    ORDER BY 客户注册时间 DESC'
      

  2.   

    ALTER PROCEDURE dbo.GetNewsCustomer 
    (
    @QuerryStr nvarchar(100),
    @EnterpriseEmployeeID int,
    @BeginTime datetime,
    @EndTime datetime,
    @Title nvarchar(50),
    @Include bit
    )
    AS
    DECLARE @SQLString varchar(8000)SET @SQLString = '
    SELECT '
    +@QuerryStr+ '
    FROM
    ContactHistory c
    WHERE
    (NOT EXISTS(SELECT 1 FROM ContactHistory WHERE CustomerEmployeeID = c.CustomerEmployeeID AND 记录时间 > c.记录时间))
    AND
    客户注册时间 >= '''+@BeginTime+ '''
    AND
    客户注册时间 < '+CAST(@EndTime AS VARCHAR)+ '
    ORDER BY 客户注册时间 DESC'IF @Title='老板'
    BEGIN
    IF @Include = 1
    SET @SQLString = @SQLString
    ELSE
    SET @SQLString = @SQLString + ' AND EnterpriseEmployeeID <> '+CASE(@EnterpriseEmployeeID AS VARCHAR)
    END
    ELSE IF @Title='销售经理'
    BEGIN
    IF @Include = 1
    SET @SQLString = @SQLString + ' AND (EnterpriseEmployeeID = '+CASE(@EnterpriseEmployeeID AS VARCHAR)+ ' or 上司 = '+CASE(@EnterpriseEmployeeID AS VARCHAR)+ ')'
    ELSE
    SET @SQLString = @SQLString + ' AND 上司 = '+CASE(@EnterpriseEmployeeID AS VARCHAR)
    END
    ELSE --sales
    BEGIN
    SET @SQLString = @SQLString + ' AND EnterpriseEmployeeID = '+CASE(@EnterpriseEmployeeID AS VARCHAR)
    ENDEXECUTE(@SQLString)
      

  3.   

    ALTER PROCEDURE dbo.GetNewsCustomer 
    (
    @QuerryStr nvarchar(100),
    @EnterpriseEmployeeID int,
    @BeginTime datetime,
    @EndTime datetime,
    @Title nvarchar(50),
    @Include bit
    )
    AS
    DECLARE @SQLString varchar(8000)SET @SQLString = '
    SELECT '
    +@QuerryStr+ '
    FROM
    ContactHistory c
    WHERE
    (NOT EXISTS(SELECT 1 FROM ContactHistory WHERE CustomerEmployeeID = c.CustomerEmployeeID AND 记录时间 > c.记录时间))
    AND
    客户注册时间 >= '''+convert(varchar(10),@BeginTime,120)+ '''
    AND
    客户注册时间 < '+convert(varchar(10),@EndTime,120)+ '
    ORDER BY 客户注册时间 DESC'IF @Title='老板'
    BEGIN
    IF @Include = 1
    SET @SQLString = @SQLString
    ELSE
    SET @SQLString = @SQLString + ' AND EnterpriseEmployeeID <> '+CAST(@EnterpriseEmployeeID AS VARCHAR)
    END
    ELSE IF @Title='销售经理'
    BEGIN
    IF @Include = 1
    SET @SQLString = @SQLString + ' AND (EnterpriseEmployeeID = '+CAST(@EnterpriseEmployeeID AS VARCHAR)+ ' or 上司 = '+CAST(@EnterpriseEmployeeID AS VARCHAR)+ ')'
    ELSE
    SET @SQLString = @SQLString + ' AND 上司 = '+CAST(@EnterpriseEmployeeID AS VARCHAR)
    END
    ELSE --sales
    BEGIN
    SET @SQLString = @SQLString + ' AND EnterpriseEmployeeID = '+CAST(@EnterpriseEmployeeID AS VARCHAR)
    ENDEXECUTE(@SQLString)
      

  4.   

    楼主笔误了吧,应该是CAST,不是CASE