日期:2014-05-19  浏览次数:20553 次

求一个简单的存储过程(求和,带四个输入参数)
表结构如下:
表名:Reservoirs
编号         省份             市               县           值
id             Ensheng     EnDiqu       EnXian   Value

我现在想写个存储过程,两个参数   1:   Type(类别,1-省份,2-市,3-县)  
                                                              2:   Sheng(参数,省份名)
                                                              3:   Diqu   (参数,市名)
                                                              4:   Xian   (参数,县名)

输出结果为输入的省份或市、或县的记录总数

即内容为:区域名称(省份、市或县)+满足条件的记录数

条件当Type=1   条件为where   enshen=Sheng  
        当Type=2   条件为where   enshen=Sheng   and   endiqu=Diqu
        当Type=3   条件为where   enshen=Sheng   and   endiqu=Diqu   and   enxian=Xian  


------解决方案--------------------
declare @tempsql varchar(2000)
declare @tempsql1 varchar(2000)
declare @tempsql2 varchar(2000)

if @Type=1
begin
@tempsql1= ' where enshen=Sheng '
@tempsql2= ' group by enSheng '
end
else
begin
if @type=2
begin
@tempsql1= ' where enshen=Sheng and endiqu=Diqu '
@tempsql2= ' group by enSheng,endiqu '
end
else
begin
if @type=3
begin
@tempsql1= ' where enshen=Sheng and endiqu=Diqu and enxian=Xian '
@tempsql2= ' group by enSheng,endiqum,xian '
end
end
end


set @tempsql= 'select sum(value) from Reservoirs '+@tempsql1+@tempsql2

exec(@tempsql)
------解决方案--------------------
declare @tempsql varchar(2000)
declare @tempsql1 varchar(2000)
declare @tempsql2 varchar(2000)

if @Type=1
begin
@tempsql1= ' where enshen=Sheng '
@tempsql2= ' group by enSheng '
end
else
begin
if @type=2
begin
@tempsql1= ' where enshen=Sheng and endiqu=Diqu '
@tempsql2= ' group by enSheng,endiqu '
end
else
begin
if @type=3
begin
@tempsql1= ' where enshen=Sheng and endiqu=Diqu and enxian=Xian '
@tempsql2= ' group by enSheng,endiqum,enxian '
end
end
end


set @tempsql= 'select sum(value) from Reservoirs '+@tempsql1+@tempsql2

exec(@tempsql)

------解决方案-