繁体   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