代码之家  ›  专栏  ›  技术社区  ›  William X

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

  •  2
  • William X  · 技术社区  · 14 年前

    我声明了一个表变量“@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
    
    1 回复  |  直到 14 年前
        1
  •  5
  •   OMG Ponies    14 年前

    使用:

    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