当前位置:首页 » 多媒体相关

一个有难度的SQL问题,请各位帮助解决


/*  
  该问题一定要用纯sql代码实际spmcdca过程,我已经实现一部分,但是无法全部实现,  
  本人能力有限,望各人高手相助。  
  以下为调用spmcdca的代码,仅演示用的。  
  */  
   
  create   table   #datas(  
      vcckbm   varchar(10)   null,     --仓库编码  
      vcspbm   varchar(20)   null,     --品种编码  
      vcfxfs1   varchar(20)   null,   --分析方式1  
      vcfxfs2   varchar(20)   null,   --分析方式2  
      fsl   decimal(18,   2)   null,     --数量  
      fje   decimal(18,   2)   null       --金额  
  )  
   
  /*以下这些insert   into语句中的数据是动态插入的,  
      在实际的系统中肯定是某些业务表中的数据。  
  */  
  insert   into   #datas(vcckbm,   vcspbm,   vcfxfs1,   vcfxfs2,   fsl,   fje)  
  values   (仓库一,   衬衣,   大号,   红衣,   100,   200)  
  insert   into   #datas(vcckbm,   vcspbm,   vcfxfs1,   vcfxfs2,   fsl,   fje)  
  values   (仓库一,   衬衣,   大号,   蓝色,   120,   987)  
  insert   into   #datas(vcckbm,   vcspbm,   vcfxfs1,   vcfxfs2,   fsl,   fje)  
  values   (仓库一,   衬衣,   中号,   白色,   10,   2000)  
  insert   into   #datas(vcckbm,   vcspbm,   vcfxfs1,   vcfxfs2,   fsl,   fje)  
  values   (仓库二,   西装,   大号,   蓝色,   11,   20000)  
  insert   into   #datas(vcckbm,   vcspbm,   vcfxfs1,   vcfxfs2,   fsl,   fje)  
  values   (仓库二,   西装,   中号,   黑色,   10,   12200)  
   
  select   *   from   #datas  
  /**/  
   
  declare   @presult   int,   @pdesttablename   varchar(20)  
  select   @pdesttablename=##daaa  
  exec   spmcdca   #datas,   vcckbm,vcspbm,,   vcfxfs1,vcfxfs2,,   fsl,fje,,   f,f,   @presult   output,   @pdesttablename   output  
   
  exec(select   *   from   +@pdesttablename)  
  exec(drop   table   +@pdesttablename)  
   
   
  drop   table   #datas  
   
  /*至此,以上为调用的代码。*/

推荐阅读

  • 关于手机充电的专业解释以及移动充电器 [详细内容]
  • HP遥遥领先2004年第四季度激光一体机市场 [详细内容]
  • PHP 5.0异常处理机制深度探索 [详细内容]
  • 西门子C65的JAVA程序使用注意四项 [详细内容]
  • 分析师称赫德就任表明惠普董事会拒绝分拆 [详细内容]
  • 惠普任命NCR公司CEO赫德为新CEO 下月初上任 [详细内容]
  • Java异常处理的陋习展播 [详细内容]
  • 网友回答:
    网友:pengdali

    --交叉数据报表:  
       
       
      create   table   你的表(姓名   varchar(100),学历   varchar(100),部门   int)  
      insert   你的表   values(n1,aa,11)  
      insert   你的表   values(n2,bb,1)  
      insert   你的表   values(n3,aa,45)  
      insert   你的表   values(n4,cc,81)  
      insert   你的表   values(n5,a,11)  
      insert   你的表   values(n6,aay,561)  
      insert   你的表   values(n7,a,14)  
       
      declare   @sql   varchar(8000)  
      set   @sql   =   select   部门  
      select   @sql   =   @sql   +   ,sum(case   学历   when   +学历+   then   1   else   0   end)   [+学历+的人数]  
          from   (select   distinct   学历   from   你的表)   a  
       
      select   @sql   =@sql+   from   你的表   group   by   部门  
       
      exec(@sql)  
       
      drop   table   你的表

    网友:liuyun2003

    表示关注。不是分的问题,而是交叉报表本身就很难的。

    网友:txlicenhe

    晕ing...

    网友:goneaway

    我也晕!

    网友:liuyun2003

    代码太长,没有是从头看到尾啊。你说一下你的思路吧。

    网友:fenglaile

    没有办法,我不懂sql   server,对不起了

    网友:dany518

    是不是楼上的兄弟晕头了?歇会

    .

    讨论区

    Login