hi
hope this helps ![]()
This avoids scalar variables entirely and keeps everything set-based.
SELECT *
FROM SomeTable S
CROSS APPLY
(
SELECT TOP (1)
F1 AS Field_O
FROM Table1
WHERE ODGUID = @Param1
) O
WHERE S.Field1 = O.Field_O;
Equivalent structure using a CTE:
DECLARE @Param1 INT = 100;
DECLARE @Param2 VARCHAR(50) = 'ABC';
;WITH CTE_O AS
(
SELECT TOP (1)
F1 AS Field_O
FROM Table1
WHERE ODGUID = @Param1
)
SELECT
...
FROM SomeTable ST
JOIN OtherTable OT
ON ST.ID = OT.ID
CROSS JOIN CTE_O O
WHERE ST.Col1 = @Param1
AND ST.Col2 = @Param2
AND ST.Field1 = O.Field_O;