Я понял, что некоторые версии Microsoft OLE DB Provider для SQL Server (в основном на Windows XP) не поддерживают инструкцию WITH
. Итак, я решил переместить мой оператор SQL в функцию, ориентированную на таблицу, и вызвать его из моего приложения. Теперь я застрял. Как использовать оператор INSERT INTO
с WITH
? Здесь код, к которому я пришел, до сих пор, но SQL Server ему не нравится... - (
CREATE FUNCTION GetDistributionTable
(
@IntID int,
@TestID int,
@DateFrom datetime,
@DateTo datetime
)
RETURNS
@Table_Var TABLE
(
[Count] int,
Result float
)
AS
BEGIN
INSERT INTO @Table_Var ([Count], Result) WITH T(Result)
AS (SELECT ROUND(Result - AVG(Result) OVER(), 1)
FROM RawResults WHERE IntID = @IntID AND DBTestID = @TestID AND Time >= @DateFrom AND Time <= @DateTo)
SELECT COUNT(*) AS [Count],
Result
FROM T
GROUP BY Result
RETURN
END
GO