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的值是从哪里取的 好像不是从后面的表中区的
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从表中查询出值,然后再付过去。这样加了红字你看得懂没?
就可以这么写,,,
一般不建议这么干,因为后续若其他表增加了这个字段,这个存储过程运行就会报错
一般都建议显示写明declare @OtherFee decimal(26,4)
select @OtherFee=sum(b.FAmount) from ICExpenses a