SQL 存储过程 优化
ALTER PROCEDURE [dbo].[Pro_MC_AccountDetailReport]
(
@MemberID uniqueidentifier,
@BeginDate datetime,
@EndDate dateTime,
@OpenType varchar(20)
)
AS
DECLARE @strWhere VARCHAR(200)
DECLARE @Type VARCHAR(20)
IF @OpenType='充值'
SET @Type='充值'
ELSE IF @OpenType='转帐'
SET @Type='会员卡转账'
ELSE IF @OpenType='消费'
SET @Type='消费支付'
ELSE
SET @Type='所有'
IF (@Type='所有')
BEGIN
SELECT ID
,F_SN
,F_Date
,F_Type
,F_Summary
,CASE WHEN F_AddMoney>0 THEN F_BalanceMoney-F_AddMoney ELSE F_BalanceMoney+F_SubtractMoney END F_OriMoney
,F_AddMoney
,F_SubtractMoney
,F_BalanceMoney
FROM @tbAccountDetail
WHERE DateDiff(day,@BeginDate,F_Date)>=0 and DateDiff(day,@EndDate,F_Date)<=0
END
ELSE
BEGIN
SELECT ID
,F_SN
,F_Date
,F_Type
,F_Summary
,CASE WHEN F_AddMoney>0 THEN F_BalanceMoney-F_AddMoney ELSE F_BalanceMoney+F_SubtractMoney END F_OriMoney
,F_AddMoney
,F_SubtractMoney
,F_BalanceMoney
FROM @tbAccountDetail
WHERE DateDiff(day,@BeginDate,F_Date)>=0 and DateDiff(day,@EndDate,F_Date)<=0 and F_Type=@Type
END
请问如何优化 最后查询的 WHERE DateDiff(day,@BeginDate,F_Date)>=0 and DateDiff(day,@EndDate,F_Date)<=0 and F_Type=@Type 条件写成一句。而不是现在的:
IF (@Type='所有')
BEGIN
SELECT ID
,F_SN
,F_Date
,F_Type
,F_Summary
,CASE WHEN F_AddMoney>0 THEN F_BalanceMoney-F_AddMoney ELSE F_BalanceMoney+F_SubtractMoney END F_OriMoney
,F_AddMoney
,F_SubtractMoney
,F_BalanceMoney
FROM @tbAccountDetail
WHERE DateDiff(day,@BeginDate,F_Date)>=0 and DateDiff(day,@EndDate,F_Date)<=0
END
ELSE
BEGIN
SELECT ID
,F_SN
,F_Date
,F_Type
,F_Summary
,CASE WHEN F_AddMoney>0 THEN F_BalanceMoney-F_AddMoney ELSE F_BalanceMoney+F_SubtractMoney END F_OriMoney
,F_AddMoney
,F_SubtractMoney
,F_BalanceMoney
FROM @tbAccountDetail
WHERE DateDiff(day,@BeginDate,F_Date)>=0 and DateDiff(day,@EndDate,F_Date)<=0 and F_Type=@Type
END
我需要的是:
SELECT ID
,F_SN
,F_Date
,F_Type
,F_Summary
,CASE WHEN F_AddMoney>0 THEN F_BalanceMoney-F_AddMoney ELSE F_BalanceMoney+F_SubtractMoney END F_OriMoney
,F_AddMoney
,F_SubtractMoney
,F_BalanceMoney
FROM @tbAccountDetail
WHERE 。。。。(需要解决)