[英]How to put max(number) condition into where clause in SQL Server 2008
我的查詢是:
Select
res.*, s.Description as GroupSpecialty,
MAX(CASE WHEN Period = @Q9 THEN cases END) OVER (PARTITION BY Group,Zone) as CompletedVolume
from
res
我需要做的是消除CompletedVolume <50時的所有數據。
當我where CompletedVolume >= 50
寫時,它說沒有列作為CompletedVolume
。 當我寫MAX(CASE WHEN Period = @Q9 THEN cases END) OVER (PARTITION BY Group, Zone) >= 50
,它說
窗口函數只能出現在SELECT或ORDER BY子句中
因此,我無法提供此條件。 我怎樣才能做到這一點? 謝謝。
使用查詢作為派生表
SELECT *
FROM
(select res.*, s.Description as GroupSpecialty,
MAX(CASE WHEN Period=@Q9 THEN cases END) OVER (PARTITION BY Group,Zone) as CompletedVolume
from res) DerivedTable
WHERE CompletedVolume < 50
或CTE
;WITH cte
AS
(
select res.*, s.Description as GroupSpecialty,
MAX(CASE WHEN Period=@Q9 THEN cases END) OVER (PARTITION BY Group,Zone) as CompletedVolume
from res
)
SELECT * from cte
where completedvolume < 50
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.