簡體   English   中英

如何將max(number)條件放入SQL Server 2008中的where子句

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM