是否可以基于连接表设置多个值的变量?
我想如何做到这一点的示例,但我不想对任何公司代码值进行硬编码。
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] 的数据样本。我希望将 @L0 变量设置为 TRF 中的任何内容,而无需声明 CompanyCode。
公司代码 | 成绩单 |
---|---|
1857 | 8 |
1848 | 16 |
1617 | 7 |
或者,某种 if 语句可能适用于我对值进行硬编码的情况,但仍然可以使用多个。这并不理想。
您可以像实际表一样使用表变量:
DECLARE @Table TABLE (CompanyCode INT, TRF INT);
INSERT INTO @Table (CompanyCode, TRF)
SELECT 1857, 8 UNION ALL
SELECT 1848, 16 UNION ALL
SELECT 1617, 7;
SELECT *
FROM @Table;
您可以像任何其他表一样使用
VALUES
或 SELECT
语句插入其中。该表变量仅存在于执行批处理的上下文中,并且在批处理完成后消失。