SQL存储过程问题

cwl1552852638 2012-12-13 04:24:05
USE [cs]
GO

/****** Object: StoredProcedure [dbo].[frmQueryMonthlySumYF3] Script Date: 12/13/2012 14:55:38 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[frmQueryMonthlySumYF3]
@m_strMonth1 varchar(50),
@m_strMonth2 varchar(50),
@m_strRdoXL varchar(50),
@m_strRdoProd varchar(50),
@m_strDrlXL varchar(50),
@m_strTxtXL varchar(500),
@m_strDrlProd varchar(50),
@m_strTxtProd varchar(500),
@m_strDrlDaQ varchar(50),
@m_strDrlPianQ varchar(50),
@m_strDrlDiQu varchar(50),
@m_strDrlTT varchar(50),
@m_strDrlXP varchar(50),
@m_strDrlXS varchar(50),
@m_strDrlSC varchar(50),
@m_strDrlLB varchar(50),
@m_strDrlQD varchar(50),
@m_strDrlTTP varchar(50),
@m_strDrlBMJS varchar(50)

AS
BEGIN
declare @strSQLWhere varchar(8000)
declare @SqlStr nvarchar (50)
declare @strSQL nvarchar (4000)
declare @strSQL1 varchar(8000)
declare @start varchar(6)
declare @end varchar(6)
declare @dMaxYmonth varchar(6)
declare @dMaxWeek varchar(6)
declare @monthNumber int
set @start=@m_strMonth1
set @end=@m_strMonth2

if(@m_strDrlTT != '全部')
begin
if (@m_strDrlTT like ('%最新%'))
begin
set @strSQLWhere =@strSQLWhere+ ' and V_DHYXMONTHLYCAN.是否淘汰= ''' +Substring(@m_strDrlTT,0, 1)+'' ;
end
else
begin
set @strSQLWhere =@strSQLWhere+ 'and dhyxmonthlysum.ifout='''+Substring(@m_strDrlTT,0, 1) +'';
end
end
if ( @m_strDrlXP!= '全部')
begin
set @strSQLWhere = @strSQLWhere+' and V_DHYXMONTHLYCAN.是否新品='''+ @m_strDrlXP +'';
end
if (@m_strDrlTTP != '全部')
begin
set @strSQLWhere = @strSQLWhere+ 'and isnull(V_DHYXMONTHLYCAN.淘汰品小库存,''否'')=''' + @m_strDrlTTP + '';
end
if (@m_strDrlDaQ != '全部')
begin
set @strSQLWhere = @strSQLWhere +' and V_BSC.大区名称= '''+ @m_strDrlDaQ + '';
end
if (@m_strDrlPianQ !='全部')
begin
set @strSQLWhere = @strSQLWhere +' and V_BSC.片区名称=''' + @m_strDrlPianQ + '';
end
if (@m_strDrlDiQu != '')
begin
set @strSQLWhere = @strSQLWhere +'and V_BSC.mergername='''+ @m_strDrlDiQu + '';
end
if (@m_strDrlXS != '全部')
begin
set @strSQLWhere = @strSQLWhere +' and dhyxmonthlysum.SELRANK=''' +@m_strDrlXS + '';
end
if (@m_strDrlSC != '全部')
begin
set @strSQLWhere = @strSQLWhere +' and dhyxmonthlysum.PRODRANK=''' + @m_strDrlSC + '';
end
if (@m_strDrlBMJS!= '全部')
begin
set @strSQLWhere = @strSQLWhere+' and V_DHYXMONTHLYCAN.表面技术='''+ @m_strDrlBMJS + '';
end
if (@m_strTxtXL!= '')
begin
set @strSQLWhere = @strSQLWhere+' and V_DHYXMONTHLYCAN.系列 in (''' + @m_strTxtXL + ')';
end
else if (@m_strDrlXL != '全部')
begin
set @strSQLWhere = @strSQLWhere+' and V_DHYXMONTHLYCAN.系列=''' + @m_strDrlXL + '';
end
if (@m_strDrlDaQ = '全部' and @m_strDrlDiQu = '全部' and @m_strDrlPianQ ='全部' and (@m_strDrlLB ='入库' or @m_strDrlLB ='发出'))
begin
set @strSQLWhere = @strSQLWhere+' and dhyxmonthlysum.AREACODE <>10000';
end
if (@m_strTxtProd != '')
begin
set @strSQLWhere =@strSQLWhere + 'and prod in (' + @m_strTxtProd + ')';
end
else if (@m_strDrlProd != '全部')
begin
set @strSQLWhere = @strSQLWhere+'and V_DHYXMONTHLYCAN.系列='''+@m_strDrlProd + '';
end
if (@strSQLWhere like('%V_BSC%'))
begin
set @strSQLWhere = @strSQLWhere +' and dhyxmonthlysum.AREACODE = V_BSC.号码 ';
set @SqlStr = @SqlStr+' ,V_BSC';
end
if (@m_strRdoXL = '1')
begin
set @strSQLWhere = @strSQLWhere+' group by dhyxmonthlysum.ymonth ,V_DHYXMONTHLYCAN.系列 ';
set @strSQL = @strSQL +'select distinct isnull(V_DHYXMONTHLYCAN.系列,'' '') as prod, dhyxmonthlysum.ymonth ymonth ';
end
else
begin
set @strSQLWhere = @strSQLWhere +' group by dhyxmonthlysum.ymonth,dhyxmonthlysum.prod ,V_DHYXMONTHLYCAN.系列 ';
set @strSQL = @strSQL +'select distinct isnull(dhyxmonthlysum.prod,'' '') as prod, dhyxmonthlysum.ymonth ymonth,V_DHYXMONTHLYCAN.系列 XL ';
end
select @monthNumber=DateDiff(m,convert(datetime,@start+'01'),convert(datetime,@end+'01'))
--select @monthnumber
declare @i int
set @i=1
while @i<=@monthnumber
begin
set @dMaxYmonth=(select isnull(max(ymonth),300001) ymonth from dhyxmonthlysum where ymonth= @start);
set @dMaxYmonth=(select isnull(max(weeknum),4) weeknum from dhyxmonthlysum where ymonth= @start);
if (@m_strDrlLB ='销售')
begin
if (@m_strDrlQD = '全部')
begin
set @strSQL1 = @strSQL + ' , round(isnull(sum((dhyxmonthlysum.selsell+dhyxmonthlysum.ensell)*1),0),0) SELL';
end
if (@m_strDrlQD = '经销')
begin
set @strSQL1 = @strSQL + ' ,round(isnull(sum((dhyxmonthlysum.selsell)*1),0),0) SELL';
end
if (@m_strDrlQD = '工程')
begin
set @strSQL1 = @strSQL + ' , round(isnull(sum((dhyxmonthlysum.ensell)*1),0),0) SELL';
end
end
if (@m_strDrlLB ='入库')
begin
if (@m_strDrlQD = '全部')
begin
set @strSQL1 = @strSQL + ' ,round(isnull(sum((dhyxmonthlysum.pselin+dhyxmonthlysum.penin)*1),0),0) SELL';
end
if (@m_strDrlQD = '经销')
begin
set @strSQL1 = @strSQL + ' ,round(isnull(sum((dhyxmonthlysum.pselin)*1),0),0) SELL';
end
if (@m_strDrlQD = '工程')
begin
set @strSQL1 = @strSQL + ' ,round(isnull(sum((dhyxmonthlysum.penin)*1),0),0) SELL';
end
end
if (@m_strDrlLB ='发出')
begin
if (@m_strDrlQD = '全部')
begin
set @strSQL1 = @strSQL +' ,round(isnull(sum((dhyxmonthlysum.pselsent+dhyxmonthlysum.pensent)*1),0),0) SELL';

end
if (@m_strDrlQD = '经销')
begin
set @strSQL1 = @strSQL + ' ,round(isnull(sum((dhyxmonthlysum.pselsent)*1),0),0) SELL';
end
if (@m_strDrlQD = '工程')
begin
set @strSQL1 = @strSQL + ' ,round(isnull(sum((dhyxmonthlysum.pensent)*1),0),0) SELL';
end
end
if (@m_strDrlLB ='库存')
begin
if (@m_strDrlQD = '全部')
begin
set @strSQL1 = @strSQL +' ,round(ISNULL(sum(case sign(dhyxmonthlysum.ymonth-''' + @dMaxYmonth + ') when 0 then(case sign(dhyxmonthlysum.weeknum-''' + @dMaxWeek + ') when 0 then (dhyxmonthlysum.pselstock+dhyxmonthlysum.penstock)*1 else 0 end)else 0 end),0),0) as SELL';

end
if (@m_strDrlQD = '经销')
begin
set @strSQL1 = @strSQL + ' ,round(ISNULL(sum(case sign(dhyxmonthlysum.ymonth-''' + @dMaxYmonth + ') when 0 then(case sign(dhyxmonthlysum.weeknum-''' + @dMaxWeek + ') when 0 then (dhyxmonthlysum.pselstock)*1 else 0 end)else 0 end),0),0) as SELL ';
end
if (@m_strDrlQD = '工程')
begin
set @strSQL1 = @strSQL + ' ,round(ISNULL(sum(case sign(dhyxmonthlysum.ymonth-'''+ @dMaxYmonth + ') when 0 then(case sign(dhyxmonthlysum.weeknum-''' + @dMaxWeek + ') when 0 then (dhyxmonthlysum.penstock)*1 else 0 end)else 0 end),0),0) as SELL ';
end
end
if (@m_strDrlLB ='在途')
begin
if (@m_strDrlQD = '全部')
begin
set @strSQL1 = @strSQL +' ,round(ISNULL(sum(case sign(dhyxmonthlysum.ymonth-''' + @dMaxYmonth + ') when 0 then(case sign(dhyxmonthlysum.weeknum-''' + @dMaxWeek + ') when 0 then (dhyxmonthlysum.pztstock+dhyxmonthlysum.ztstock+dhyxmonthlysum.penztstock+dhyxmonthlysum.enztstock)*1 else 0 end)else 0 end),0),0) as SELL';
end
if (@m_strDrlQD = '经销')
begin
set @strSQL1 = @strSQL +' ,round(ISNULL(sum(case sign(dhyxmonthlysum.ymonth-''' + @dMaxYmonth + ') when 0 then(case sign(dhyxmonthlysum.weeknum-''' + @dMaxWeek + ') when 0 then (dhyxmonthlysum.pztstock+dhyxmonthlysum.ztstock)*1 else 0 end)else 0 end),0),0) as SELL';
end
if (@m_strDrlQD = '工程')
begin
set @strSQL1 = @strSQL +' ,round(ISNULL(sum(case sign(dhyxmonthlysum.ymonth-''' + @dMaxYmonth + ') when 0 then(case sign(dhyxmonthlysum.weeknum-''' + @dMaxWeek + ') when 0 then (dhyxmonthlysum.penztstock+dhyxmonthlysum.enztstock)*1 else 0 end)else 0 end),0),0) as SELL';
end
end

set @strSQL1 = @strSQL1 +' from dhyxmonthlysum,V_DHYXMONTHLYCAN ';
set @strSQL1 = @strSQL1 + @SqlStr;
set @strSQL1 = @strSQL1 + 'where dhyxmonthlysum.prod=V_DHYXMONTHLYCAN.品名 and dhyxmonthlysum.ymonth=''' + @dMaxYmonth + '';
set @strSQL1 = @strSQL1 + @strSQLWhere;

set @start=convert(varchar(6),dateadd(m,1,convert(datetime,@start+'01')),112)
set @i=@i+1
if(@i<=@monthnumber)
begin
set @strSQL1 = @strSQL1 +' union all'
end
end
select @strSQLWhere
select @strSQL
select @strSQL1
EXEC(@strSQL1)
END

GO




USE [cs]
GO

DECLARE @return_value int

EXEC @return_value = [dbo].[frmQueryMonthlySumYF3]
@m_strMonth1 = N'201209',
@m_strMonth2 = N'201211',
@m_strRdoXL = N'1',
@m_strRdoProd = N'0',
@m_strDrlXL = N'全部',
@m_strTxtXL = NULL,
@m_strDrlProd = N'全部',
@m_strTxtProd = NULL,
@m_strDrlDaQ = N'全部',
@m_strDrlPianQ = N'全部',
@m_strDrlDiQu = NULL,
@m_strDrlTT = N'全部',
@m_strDrlXP = N'全部',
@m_strDrlXS = N'全部',
@m_strDrlSC = N'全部',
@m_strDrlLB = N'在途',
@m_strDrlQD = N'全部',
@m_strDrlTTP = N'全部',
@m_strDrlBMJS = N'全部'

SELECT 'Return Value' = @return_value
GO


我该怎么改啊,(sos)
...全文
147 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
cwl1552852638 2012-12-13
  • 打赏
  • 举报
回复
引用 3 楼 garr_odie 的回复:
set nocount OFF
按理说一概有数据,为什么会这样啊,你知道asp。net的reporting service+sql存储过程怎么调试吗
shelly 2012-12-13
  • 打赏
  • 举报
回复
set nocount OFF
cwl1552852638 2012-12-13
  • 打赏
  • 举报
回复
引用 1 楼 aluogang 的回复:
只有神才会知道要怎么改,什么问题都不说,光贴个代码上来,鬼知道你要干什么
我要输出一条sql语句,还要执行这条sql后出来的一张表,可是什么数据也没有
aluogang 2012-12-13
  • 打赏
  • 举报
回复
只有神才会知道要怎么改,什么问题都不说,光贴个代码上来,鬼知道你要干什么

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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