SQL 存储过程 优化

lxg1508 2010-10-13 04:56:52
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 。。。。(需要解决)
...全文
35 点赞 收藏 2
写回复
2 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Rotel-刘志东 2010-10-13
lz代码太乱的。
回复
fpzgm 2010-10-13
- -!好长,帮你顶下,期待下楼帮你搞定
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2010-10-13 04:56
社区公告
暂无公告