我可以根据另一个表声明 SQL 变量吗?

问题描述 投票:0回答:1

是否可以基于连接表设置多个值的变量?

我想如何做到这一点的示例,但我不想对任何公司代码值进行硬编码。

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 语句可能适用于我对值进行硬编码的情况,但仍然可以使用多个。这并不理想。

sql sql-server variables join declare
1个回答
0
投票

您可以像实际表一样使用表变量:

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
语句插入其中。该表变量仅存在于执行批处理的上下文中,并且在批处理完成后消失。

© www.soinside.com 2019 - 2024. All rights reserved.