Sql server 工作的T-SQL查询在将值分配给变量时出错

Sql server 工作的T-SQL查询在将值分配给变量时出错,sql-server,syntax,variable-assignment,Sql Server,Syntax,Variable Assignment,以下查询有效。但是,当我取消注释注释行以便将查询变量分配给本地定义的变量时,在最后的“;”处会出现语法错误 我相信我正在使用正确的语法将查询值分配给用户定义的变量,正如在这些线程的其他文章中所解释的那样。语法错误具体在哪里?别名主要子查询库!成功了。为了清楚起见,我在赋值中添加了子查询别名作为变量的前缀。所以,“a.tot__ct”和“a.cls_ct”。然而,SQL Server不需要这个。是的,我总是尝试使用别名,只要它能让它更清晰,即使不是必需的! declare @tmp_total_

以下查询有效。但是,当我取消注释注释行以便将查询变量分配给本地定义的变量时,在最后的“;”处会出现语法错误


我相信我正在使用正确的语法将查询值分配给用户定义的变量,正如在这些线程的其他文章中所解释的那样。语法错误具体在哪里?

别名主要子查询库!成功了。为了清楚起见,我在赋值中添加了子查询别名作为变量的前缀。所以,“a.tot__ct”和“a.cls_ct”。然而,SQL Server不需要这个。是的,我总是尝试使用别名,只要它能让它更清晰,即使不是必需的!
 declare @tmp_total_ct int
 declare @tmp_closed_ct int

 SELECT @tmp_total_ct = tot_ct, @tmp_closed_ct = cls_ct
     FROM (
        SELECT COUNT(*) AS tot_ct,
        SUM(IIF(is_closed = 1, 1, 0)) AS cls_ct
              FROM  corp.CashDealDetails
                INNER JOIN WidgeStores wstrs
                   ON corp.CashDealDetails.abbrev = wstrs.abbrev
              WHERE mall_id IN
                (SELECT mall_ndx FROM WidgeStores wstrs
                   WHERE wstrs.abbrev IN 
                      (SELECT abbrev FROM @tmpMkts)
                   AND wstrs.[is_opn] = 1
                )
                AND YEAR(closing_dt) = 2012
) a 

print @tmp_total_ct
print @tmp_closed_ct
 declare @tmp_total_ct int
 declare @tmp_closed_ct int

 SELECT @tmp_total_ct = tot_ct, @tmp_closed_ct = cls_ct
     FROM (
        SELECT COUNT(*) AS tot_ct,
        SUM(IIF(is_closed = 1, 1, 0)) AS cls_ct
              FROM  corp.CashDealDetails
                INNER JOIN WidgeStores wstrs
                   ON corp.CashDealDetails.abbrev = wstrs.abbrev
              WHERE mall_id IN
                (SELECT mall_ndx FROM WidgeStores wstrs
                   WHERE wstrs.abbrev IN 
                      (SELECT abbrev FROM @tmpMkts)
                   AND wstrs.[is_opn] = 1
                )
                AND YEAR(closing_dt) = 2012
) a 

print @tmp_total_ct
print @tmp_closed_ct