這是我的代碼:
WITH ActivityCTE AS
(
SELECT DISTINCT
id,
COUNT(*) OVER (PARTITION BY id) ctn
FROM
dailyActivity_merged$
)
DELETE ActivityCTE
WHERE ctn <> 31
有人可以向我解釋為什么COUNT()在視窗函式中使用會拋出錯誤訊息 4403?
無法更新視圖或函式“ActivityCTE”,因為它包含聚合、DISTINCT 或 GROUP BY 子句、PIVOT 或 UNPIVOT 運算子。
在此處輸入圖片說明
我正在嘗試使用 CTE 從我的表中洗掉一些沒有 31 個條目的記錄。
uj5u.com熱心網友回復:
Count(*) 不是錯誤的根源。
錯誤資訊詳情 ...DISTINCT...
WITH ActivityCTE AS(
SELECT *
,COUNT(*) OVER( PARTITION BY id) ctn
FROM dailyActivity_merged$
)
DELETE FROM ActivityCTE
WHERE ctn <> 31
uj5u.com熱心網友回復:
FWIW,我會用 GROUP BY/HAVING 而不是視窗函式來撰寫它,并從實際表中洗掉,如下所示:
WITH ActivityCTE AS(
SELECT id
FROM dailyActivity_merged$
GROUP BY id
HAVING count(*) <> 31
)
DELETE dam
FROM dailyActivity_merged$ dam
INNER JOIN ActivityCTE cte on cte.id = dam.id
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/371564.html
標籤:sql sql-server 查询语句 窗函数
