如何基于其他表动态声明SQL变量并实现存储过程条件评分?
SQL动态变量配置问题
一、技术疑问
- 能否基于其他表声明SQL变量?
- 能否基于条件值设置变量?
二、需求说明
希望在SQL存储过程中,无需硬编码公司代码值,让变量@L0根据CompanyCode动态匹配[Database1].[DQ].[RFRuleConfig]表中对应的TRF值(例如CompanyCode为1857时TRF为8,1848时为16),并多次调用该变量为数据行分配对应Score。
三、尝试的代码
declare @L0 int declare @L1 int =-1 declare @StartDate datetime declare @EndDate datetime set @L0 = (Select TRF from [Database1].[DQ].[RFRuleConfig] R JOIN [Database2].[Dim].[Company] C on C.[CompanyCode] = R.[CompanyCode] WHERE C.CompanyCode IN ('1857','1848')) set @StartDate = dateadd(month, datediff(month, 0, getdate()) - 1, 0) set @EndDate = dateadd(month, datediff(month, 0, getdate()) + 0, -1)
四、表数据样例
[Database1].[DQ].[RFRuleConfig]表数据如下:
| CompanyCode | TRF |
|---|---|
| 1857 | 8 |
| 1848 | 16 |
| 1617 | 7 |
五、补充说明
可以用硬编码IF语句实现需求,但这不是最优方案。最终需要在如下查询中使用动态的@L0分配Score:
select Recordidinv,CompanyCode,BookCountryID, 'RF1' as Error, @L1 as Score from [Table]
内容的提问来源于stack exchange,提问作者courty340
相关产品推荐
相关产品推荐

