Я хочу иметь возможность вставлять результаты этого запроса CTE во временную таблицу, чтобы суммировать столбец Total.
CREATE TABLE #tmp
(
SerialNumber NVARCHAR(50),
StartDateTime NVARCHAR(50),
EndDateTime NVARCHAR(50),
Total NVARCHAR(50)
)
;WITH cte1 AS
(
SELECT
*,
CASE
WHEN Temperature > @maxthreshold AND LAG(Temperature) OVER (PARTITION BY SerialNumber ORDER BY CombineDateTime) IS NULL THEN 1
WHEN Temperature <= @maxthreshold AND LEAD(Temperature) OVER (PARTITION BY SerialNumber ORDER BY CombineDateTime) > @maxthreshold THEN 1
WHEN Temperature <= @maxthreshold AND LAG(Temperature) OVER (PARTITION BY SerialNumber ORDER BY CombineDateTime) > @maxthreshold THEN 1
END AS chg
FROM
[RawData]
WHERE
SerialNumber = @_Serial
AND CombineDateTime BETWEEN @_DateFrom AND @_DateTo
), cte2 AS
(
SELECT
*,
SUM(chg) OVER (PARTITION BY SerialNumber ORDER BY CombineDateTime) AS grp
FROM
cte1
)
INSERT INTO #tmp
SELECT
SerialNumber,
MIN(CombineDateTime) AS StartDateTime,
MAX(CombineDateTime) AS EndDateTime,
DATEDIFF(SECOND, MIN(CombineDateTime), MAX(CombineDateTime)) / 60.0 AS 'Total'
FROM
cte2
GROUP BY
SerialNumber, grp
HAVING
MAX(Temperature) > @maxthreshold)
SELECT *
FROM #tmp
DROP TABLE #tmp
Я пытался поместить вставку в разные места, но этоне вставьте, я попробовал следующие ответы.Меня смущает, почему вставка не работает, поскольку она находится вне рекурсии.
Ответ 1 Ответ 2
TIA