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

以查询结果为依据的一个存储过程
各位高手,上次我解决了这样一个问题:

我一个prodcut表
product
a
b
c
d
e
f
g
.
.
.
另一个表he_productorder
breed           amount
a                       5
c                       3
e                       2
g                       8
现要求查询出结果如下
breed         amount
a                       5                
b
c                       3
d
e                       2
f
g                       8
.
.
.
无数据的品种一定要显示为空.
解决方案为:
--存储过程
CREATE   procedure   he_o;1
@shopname   varchar(20)
as
Select   he_product.product,isnull(cast(T.amount   as   char(5)), ' ')   amount
From   he_product   Left   outer   join   (Select   breed,amount   From   he_productorder_view   where   sname=@shopname)   T  
On   he_product.product=T.breed
GO

现在我又碰到了一个问题,比如以下存储过程
CREATE   PROCEDURE   he_order;5
@Tname   varchar(16)
as
SELECT   Breed,sum(amount)   as   amount   FROM   He_ProductOrder_view  
WHERE   (TName   =   @Tname)   and   (Amount   <>   -   100)
GROUP   BY   Breed,PId   ORDER   BY   PId
GO
得到结果如下:
breed       amount
1                   50
2                   30  
4                   20
6                   15
8                   10
11                 23
我要从以上结果中以breed为依据来找到订货情况实现如下效果:
breed       amount
1                   2
2                
4                   8
6                   2    
8          
11                 9
其实就是把原来的product表换成现在的那个存储过程的结果,可是我比较菜,请赐教!

------解决方案--------------------
你這裡要麼用實體表或者用全局臨時表,用局部臨時表的話,就由於作用域的問題在外部無法調用。

可以參考下這個帖子。

http://community.csdn.net/Expert/TopicView.asp?id=5429308