日期:2014-05-18  浏览次数:20577 次

求一段SQL代码,谢谢大家!
表:product(产品表)
pro_id   pro_name     pro_lower(库存下限)     pro_upper(库存上限)
    1           电视                 5                                             50
    2           水果                 10                                           60
表:stock(库存表)
  sto_id   pro_id     pro_amount(数量)   pro_stoarage(所在仓库)
      1             1                   3                                     1
      2             1                   1                                     2
      3             2                   30                                   1
      4             2                   10                                   2

表:storage   (仓库表)
storage_id     storage_name
      1                       主仓库
      2                       家电库
如何在存储过程中汇总得到:
pro_id   pro_name   pro_amount(总数量)   主仓库(数量)     家电库(数量)       ...
        1           电视                 4                                 3                           1
        2           水果                 40                               30                         10

并且能分别查询出:
库存总数量 <产品表中产品下限的产品
库存总数量> 产品表中产品上限的产品

------解决方案--------------------
declare @sql varchar(8000)
set @sql= ' '

select @sql=@sql+ ',[ '+storage_name
+ '(数量)]=sum(case pro_stoarage when '+rtrim(storage_id)
+ ' then pro_amount else 0 end) '
from storage

set @sql= 'select p.pro_id,p.pro_name,pro_amount=sum(pro_amount) '+@sql
+ ' from product p,stock s where p.pro_id=s.pro_id group by p.pro_id,p.pro_name '

exec(@sql)
------解决方案--------------------<