2016-05-31 146 views
0

次のクエリがあり、複数部分の識別子をバインドできないという例外が発生しました。私はなぜ、そして私の次の考えは、機能しなかったCROSS APPLYを使うことであると思います。私が本当に必要とするのは、サブクエリを結合して、特定の列の最新のエントリを取得することです。内部結合のサブクエリ - マルチパート識別子をバインドできませんでした。

残念ながら、私はアイデアを使い果たしました...このクエリはどのように達成できますか?

SELECT t1.* 
FROM dbo.Table1 t1 (nolock) 
INNER JOIN 
(
    SELECT TOP 1 t2_s.c1, t2_s.c2, t2_s.c4 
    FROM dbo.Table2 t2_s 
    WHERE t2_s.c1 = t1.c1 
    ORDER BY t2_s.dateStamped DESC 
) t2 
    on t2.c1 = t1.c1 
INNER JOIN dbo.Table3 t3 
    on t3.c1 = t2.c2 and t3.c2 = 1 
WHERE t1.c2 = 'xxx' 
+1

は何データベースを使用していますか? –

+0

SQL Server - 申し訳ありませんが、そのzzzを置くのを忘れてしまった – user2124871

答えて

1

その後CROSS APPLYはあなたが欲しいものを行う必要があり、SQL Serverを使用していると仮定すると:あなたは

SELECT t1.* 
FROM dbo.Table1 t1 (nolock) CROSS APPLY 
    (SELECT TOP 1 t2_s.c1, t2_s.c2, t2_s.c4 
     FROM dbo.Table2 t2_s 
     WHERE t2_s.c1 = t1.c1 
     ORDER BY t2_s.dateStamped DESC 
    ) t2 INNER JOIN 
    dbo.Table3 t3 
    on t3.c1 = t2.c2 and t3.c2 = 1 
WHERE t1.c2 = 'xxx'; 
関連する問題