CREATE proc ProductPlace
@BeginDate datetime,
@EndDate datetime
asset nocount on
create   table #Report(
FID int IDENTITY (1, 1) not null, --自增ID
FProduct int null, --产品
FModel varchar(250) null, --规格型号
FAmount decimal(26,4) null --金额
)........
........
........
........
create table #ReportSum(
FID int IDENTITY (1, 1) not null, --自增ID
FProduct int null, --产品
FModel varchar(250) null, --规格型号
FAmount decimal(26,4) null --金额
)Insert Into #ReportSum(FProduct,FModel,FAmount)
select FProduct,FModel,sum(FAmount) from #Report
group by FProduct,FModel
declare @OtherFee decimal(26,4)
select @OtherFee=sum(FAmount) from ICExpenses a 
inner join ICExpensesEntry b on a.FInterID=b.FInterID
inner join t_Fee c on b.FItemID=c.FItemID
where a.FCancellation=0
and a.FDate between @BeginDate and @EndDate
and (c.FNumber='002' or c.FNumber='003' or c.FNumber='004')有这么一段储存过程 其他的我都看明白 唯独有一条查询我看不明白什么意思
谁能给解释一下
declare @OtherFee decimal(26,4)
select @OtherFee=sum(FAmount) from ICExpenses a 
@OtherFee=sum(FAmount)    FAmount的值是从哪里取的 好像不是从后面的表中区的

解决方案 »

  1.   

    FAmount从ICExpenses a中取的,汇总后给@OtherFee
      

  2.   

    ICExpenses a 中没有 FAmount 字段  ICExpensesEntry b 中有这个字段但是 @OtherFee=sum(FAmount)  可以直接调去不用带表名字么?
      

  3.   

    declare @OtherFee decimal(26,4)
     select @OtherFee=sum(b.FAmount) from ICExpenses a  
     inner join ICExpensesEntry b on a.FInterID=b.FInterID
     inner join t_Fee c on b.FItemID=c.FItemID
     where a.FCancellation=0
     and a.FDate between @BeginDate and @EndDate
     and (c.FNumber='002' or c.FNumber='003' or c.FNumber='004')
     这个不是一个简单的赋值语句,是先用select从表中查询出值,然后再付过去。这样加了红字你看得懂没?
      

  4.   

    可以,只要该字段时连接3个表中唯一的字段名
    就可以这么写,,,
    一般不建议这么干,因为后续若其他表增加了这个字段,这个存储过程运行就会报错
    一般都建议显示写明declare @OtherFee decimal(26,4)
    select @OtherFee=sum(b.FAmount) from ICExpenses a