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