将筛选的多个结果,以一条记录的形式放入另一个库。(附源码,求优化)

原表:FeeItem(钱Debit,时间HotelDate,编号TransCode)
目标表:transcodeamount(hoteldate,T1,T2,T3,T4,T5,T6)
要求:从FeeItem表中统计某天(HotelDate)编号为100-105钱的总和,再插入transcodeamount表。


Declare @hoteldate datetime
Declare @T1 money
Declare @T2 money
Declare @T3 money
Declare @T4 money
Declare @T5 money
Declare @T6 money

SET @hoteldate='2008-07-06'

select @T1=sum(Debit) from FeeItem WHERE HotelDate=@hoteldate and TransCode=100
select @T2=sum(Debit) from FeeItem WHERE HotelDate=@hoteldate and TransCode=101
select @T3=sum(Debit) from FeeItem WHERE HotelDate=@hoteldate and TransCode=102
select @T4=sum(Debit) from FeeItem WHERE HotelDate=@hoteldate and TransCode=103
select @T5=sum(Debit) from FeeItem WHERE HotelDate=@hoteldate and TransCode=104
select @T6=sum(Debit) from FeeItem WHERE HotelDate=@hoteldate and TransCode=105

Print CAST ( @T1 AS VARCHAR(10) )
Print CAST ( @T2 AS VARCHAR(10) )
Print CAST ( @T3 AS VARCHAR(10) )
Print CAST ( @T4 AS VARCHAR(10) )
Print CAST ( @T5 AS VARCHAR(10) )
Print CAST ( @T6 AS VARCHAR(10) )

insert into transcodeamount VALUES(@hoteldate,@T1,@T2,@T3,@T4,@T5,@T6)
...全文
54 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
第三个朋友的高明些
我加分结了
  • 打赏
  • 举报
回复
谢楼上三位
Andy-W 2008-12-03
  • 打赏
  • 举报
回复
Declare @hoteldate datetime

SET @hoteldate='2008-07-06'

insert into transcodeamount
Select
Max(Case TransCode When 100 Then T Else 0 End) As T1,
Max(Case TransCode When 101 Then T Else 0 End) As T2,
Max(Case TransCode When 102 Then T Else 0 End) As T3,
Max(Case TransCode When 103 Then T Else 0 End) As T4,
Max(Case TransCode When 104 Then T Else 0 End) As T5,
Max(Case TransCode When 105 Then T Else 0 End) As T6
From
(Select TransCode,sum(Debit) As T
From FeeItem
Where HotelDate=@hoteldate
And TransCode Between 100 And 105
Group By TransCode
) As a


律己修心 2008-12-03
  • 打赏
  • 举报
回复
--如果有参数嗅探问题
SET @hoteldate='2008-07-06'

exec(
'insert into transcodeamount VALUES( '+@hoteldate+' ,
select sum(Debit) from FeeItem WHERE HotelDate= '+@hoteldate+' and TransCode=100,
select sum(Debit) from FeeItem WHERE HotelDate= '+@hoteldate+' and TransCode=101,
select sum(Debit) from FeeItem WHERE HotelDate= '+@hoteldate+' and TransCode=102,
select sum(Debit) from FeeItem WHERE HotelDate= '+@hoteldate+' and TransCode=103,
select sum(Debit) from FeeItem WHERE HotelDate= '+@hoteldate+' and TransCode=104,
select sum(Debit) from FeeItem WHERE HotelDate= '+@hoteldate+' and TransCode=105
')
dawugui 2008-12-03
  • 打赏
  • 举报
回复
SET @hoteldate='2008-07-06'

insert into transcodeamount VALUES(@hoteldate,
select sum(Debit) from FeeItem WHERE HotelDate=@hoteldate and TransCode=100,
select sum(Debit) from FeeItem WHERE HotelDate=@hoteldate and TransCode=101,
select sum(Debit) from FeeItem WHERE HotelDate=@hoteldate and TransCode=102,
select sum(Debit) from FeeItem WHERE HotelDate=@hoteldate and TransCode=103,
select sum(Debit) from FeeItem WHERE HotelDate=@hoteldate and TransCode=104,
select sum(Debit) from FeeItem WHERE HotelDate=@hoteldate and TransCode=105
)

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧