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 。。。。(需要解决)
...全文
59 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Rotel-刘志东 2010-10-13
  • 打赏
  • 举报
回复
lz代码太乱的。
fpzgm 2010-10-13
  • 打赏
  • 举报
回复
- -!好长,帮你顶下,期待下楼帮你搞定

22,302

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧