Create Procedure Pd_ZzMj/*种植面积*/
as
Declare @Sql Varchar(8000)
Set @Sql='Select 年份 ,乡团名称 '
Select @Sql=@sql+',Max(Case 作物名称 When '''+zwmc+''' then 种植面积 Else 0.0 end ) 
['+zwmc+']'
from (select zwmc From tblzwbasic) as a 
Select @sql=@sql+',Sum(种植面积) as 总面积 into ##临时表 from vw_zzmjbasic group by 年份,乡团名称'
exec(@sql)
Go--调用:
select * from ##临时表drop table  ##临时表

解决方案 »

  1.   

    1:象你这种不确定的东西只能用动态SQL。
    2:视图中是不能用EXEC来执行动态SQL语句的。
      

  2.   

    create view v_name 
    asselect 年份,乡团名称,Max(作物名称) as 作物名称,Sum(总面积) as 总面积 from vw_zzmjbasic group by 年份,乡团名称
      

  3.   

    TO  nboys():
    你没有理解我的意思?
      

  4.   

    一定要用视图做的话就先把所有符合条件的记录进行统计汇总,再在程序中动态增加where条件的字符串:
    视图:select 年份,乡团名称,Max(作物名称) as 作物名称,Sum(总面积) as 总面积 from vw_zzmjbasic group by 年份,乡团名称
    程序:select * from view where ......
      

  5.   

    用sql server 2000 的function 很好用
    它的性質就是一個帶 argument 的view
      

  6.   

    to  CrazyFor(太阳下山明朝依旧爬上来):
    表值函数返回的表的结构必须是固定的,但我的结构是不确定的,所以也是不行的,
    谢谢,
    希望大家继续关注!