特定の値を選択しようとしている内部結合で明示的な結合を試みているため、別のテーブルから。TSQLマルチパート識別子をバインドできませんでした(内部結合のselect xテーブルの明示的な結合)
マイSQL:
SELECT A.OrderID
, A.ItemID
, A.Line
, B.LID
, B.Quantity
FROM Sales A
INNER JOIN (SELECT X.OrderID
, X.Line
, SUM(X.Quantity) AS Quantity
, X.DestinationID
, X.SerialNum
FROM SalesDetail X
WHERE X.OrderID = A.OrderID
GROUP BY X.OrderID, X.Line, X.DestinationID, X.SerialNum
) AS C
ON A.Line = C.Line
AND B.Quantity = C.Quantity
AND B.SerialNum = C.SerialNum
INNER JOIN SalesContents B
ON A.OrderID = B.OrderID
AND A.ItemID = B.ItemID
WHERE A.OrderID = '12345'
AND A.ItemID = 'ABC123';
今、私はXテーブル内WHERE句を削除し、内部以内にそれをフィルタリングすることができますが、参加するが、私は、私は値を照会していたときに右のそれをフィルタリングしたいと思います。このステートメントを書き直して、バインドされていない識別子を回避する方法はありますか?
あなた 'join' SalesContentsのB(別名)の後に条件'とB.Quantity = C.Quantity AND B.SerialNum = C.SerialNum'を移動します。 –
あなたの質問はちょうど意味をなさない。結合条件は、定義される前に表の別名を参照します。私は、テーブルの別名( 'a'ではなく' sales'のための 's'のような)にテーブルの略語を使うと便利です。条件を正しく並べ替え、サブクエリの 'where'句を削除するようにクエリを修正すると、クエリを自分で修正できる可能性があります。 –