Вы также можете использовать CROSS APPLY
для этого , как в этом совете Ицик Бен Ган .
SELECT SalesOrderID, OrderDate, Week_Day
FROM Sales.SalesOrderHeader
CROSS APPLY
(SELECT DATEPART(weekday, DATEADD(day, @@DATEFIRST - 7, OrderDate)) AS Week_Day) AS A
WHERE Week_Day NOT IN (1, 7);
Вы должны знать, что повторное использование псевдонимов в предложении where
сделает предикат неразрешимым, однако его следует использовать с осторожностью (это относится независимо от того, используете ли вы APPLY
или CTE)