0
CROSS APPLYをテーブル値関数で使用することをお勧めします。CROSS APPLYで "ON"を適用できないのはなぜですか?
インスタンスの場合、これは完全に正常に動作します。
SELECT
TBL1.pkId,
TBL1.roleIS,
TBL1.Name INTO #tmpTBL
FROM TBL1
CROSS APPLY Convert(@keys, ',') AS ArrayTBL
WHERE ArrayTBL.item = TBL1.pkId
「ON」キーワードを適用しようとすると、構文エラーが表示され始めます。なぜそれは のようにそれはまた内部結合のタイプですか?
SELECT
TBL1.pkId,
TBL1.roleIS,
TBL1.Name INTO #tmpTBL
FROM TBL1
CROSS APPLY Convert(@keys, ',') AS ArrayTBL
ON ArrayTBL.item = TBL1.pkId
私は私が適用CROSSを使用する必要があるクエリの下に持っているという理由だけで「ON」を適用しようとしています。 INNERのように適用されますが、CROSSでON使用することはできません
Select Tbl1.pkey, Tbl1.Name, Tbl2.EmployeeName
from Tbl1 inner join Tbl2 on Tbl1.id= Tbl2.Id
inner join Convert(@keys, ',') AS Array
ON Tbl2.ItemId = Array.item
inner join Tbl3 on tbl3.id = Array.item
inner join #tmpTBL on #tmpTBL.pkId = Tbl3.id
「クロス」には「オン」はありません。 'ON'は' INNER'または 'OUTER'でのみ有効です。 – Ben
私はまだあなたが 'ON'節を望む理由を理解していませんか? 'WHERE'節を使うと、論理的には同じです。一般的には、 'CROSS'結合は' ON'を持たず、そうではありません。デカルト結合になります。 – sagi
'cross apply'は「十字結合」であり、十字結合には結合列がありません。標準的なキーワードを使用すると、より明確になります。 'cross apply'は、標準SQLの' cross join lateral'と同じです。 –