SQL server 存储过程中解决整数参数的传递问题

本文介绍了一个SQL存储过程的具体实现案例,该存储过程用于从多个表中抽取数据,并通过条件筛选返回特定时间段内的汇总信息。具体操作包括联合查询、条件过滤、类型转换等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


create proc [dbo].[test1](@TypeGuid varchar(900),@Num int,@StartTime varchar(50),@EndTime varchar(50),@SqlStr varchar(1000)) 

as 

begin

declare @sql as varchar(8000)
set @sql='select top '+cast(@Num as varchar(4))+' 时间,SUM(自助餐) as 自助餐,SUM(西餐)as 西餐,SUM(菜系餐饮) as 菜系餐饮,SUM(火锅香锅) as 火锅香锅,SUM(中餐) as 中餐,SUM(小吃快餐) as 小吃快餐,SUM(甜点饮品) as 甜点饮品,SUM(日韩料理)as 日韩料理,SUM(其他餐饮)as 其他餐饮
from (
select b.TraceDateTime as 时间,
SUM(case b.TypeName when ''自助餐'' then b.Num else 0 end) 自助餐,
SUM(case b.TypeName when ''西餐'' then b.Num else 0 end) 西餐,
SUM(case b.TypeName when ''菜系餐饮'' then b.Num else 0 end) 菜系餐饮,
SUM(case b.TypeName when ''火锅香锅'' then b.Num else 0 end) 火锅香锅,
SUM(case b.TypeName when ''中餐'' then b.Num else 0 end) 中餐,
SUM(case b.TypeName when ''小吃快餐'' then b.Num else 0 end) 小吃快餐,
SUM(case b.TypeName when ''甜点饮品'' then b.Num else 0 end) 甜点饮品,
SUM(case b.TypeName when ''日韩料理'' then b.Num else 0 end) 日韩料理, 
SUM(case b.TypeName when ''其他餐饮'' then b.Num else 0 end) 其他餐饮
from (select tbNum.TraceDateTime,PortalTypes.TypeName,COUNT(*)as Num from  [TocContents].[dbo].[tb_PortalTypes] PortalTypes 
left join [TocContents].[dbo].[tb_Portals] Portals on PortalTypes.Guid = Portals.TypeGuid
left join ('+@SqlStr+'  ) tbNum on tbNum.BrowsedPortalNo = Portals.PortalNo
where PortalTypes.MenuGuid = '''+@TypeGuid+'''  group by tbNum.TraceDateTime,PortalTypes.TypeName having count(*)>=1)b
where b.TraceDateTime is not null and b.TraceDateTime between '''+@StartTime+''' and '''+@EndTime+''' group by b.TypeName,b.TraceDateTime
)eee group by eee.时间  order by eee.时间 asc'
exec(@sql)
end

蓝色部分就是整数的转换方式,依次方式转换后即可


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值