Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在T-SQL中,如何在子查询中引用表变量?_Sql_Sql Server_Tsql_Sql Server 2000_Table Variable - Fatal编程技术网

在T-SQL中,如何在子查询中引用表变量?

在T-SQL中,如何在子查询中引用表变量?,sql,sql-server,tsql,sql-server-2000,table-variable,Sql,Sql Server,Tsql,Sql Server 2000,Table Variable,我已经声明了一个表变量'@t',并且正确地执行了'INSERT-INTO-SELECT'。 当我试图用一些额外的计算来查询表变量以进行分组行编号时,我得到了一个错误:直接使用'@t'时“必须声明变量”,或者使用'@t'别名时“无效对象名”。请告知 SELECT *, (SELECT COUNT(*) FROM "LTV" "COUNTER" WHERE "COUNTER"."Collateral_ID" = "LTV"."Collateral_ID"

我已经声明了一个表变量'@t',并且正确地执行了'INSERT-INTO-SELECT'。 当我试图用一些额外的计算来查询表变量以进行分组行编号时,我得到了一个错误:直接使用'@t'时“必须声明变量”,或者使用'@t'别名时“无效对象名”。请告知

SELECT 
    *,
    (SELECT COUNT(*) FROM "LTV" "COUNTER"
     WHERE 
        "COUNTER"."Collateral_ID" = "LTV"."Collateral_ID"
        AND
        "COUNTER"."m_il_no" = "LTV"."m_il_no"
        AND
        "COUNTER"."Ref_Key" <= "LTV"."Ref_Key"
     GROUP BY "COUNTER"."Collateral_ID", "COUNTER"."m_il_no"
    ) "MIL_IDX"

FROM @t AS LTV
选择
*,
(从“LTV”计数器中选择计数(*)
哪里
“柜台”。“抵押品ID”=“LTV”。“抵押品ID”
及
“计数器”“m_il_no”“LTV”“m_il_no”
及
“计数器”“参考键”使用:


关键是,我们必须在子查询中声明表变量的别名
SELECT x.*,
       y.num
  FROM @t x
  JOIN (SELECT t.collateral_id,
               t.m_il_no,
               COUNT(*) AS num
          FROM @t t
      GROUP BY t.collateral_id, t.m_il_no) y ON y.collateral_id = x.collateral_id
                                            AND y.m_il_no = x.m_il_no