Sql 使用带有比较运算符的窗口函数

Sql 使用带有比较运算符的窗口函数,sql,sql-server,Sql,Sql Server,我在cte中有以下查询 SELECT [item_id] FROM [AWS_Stage] WHERE [yr] IN('2020') GROUP BY [item_id] HAVING SUM(ISNULL([frcst_qty], 0)) >= 0 在过去,我只需要2020年的所有项目id大于0 我现在需要按客户分组使所有项目id大于0。下面这样的代码行是有意义的: SUM([frcst_qty]) OVE

我在cte中有以下查询

SELECT   [item_id]
         FROM [AWS_Stage]
         WHERE [yr] IN('2020')
         GROUP BY [item_id]
         HAVING SUM(ISNULL([frcst_qty], 0)) >= 0 
在过去,我只需要2020年的所有项目id大于0

我现在需要按客户分组使所有项目id大于0。下面这样的代码行是有意义的:

SUM([frcst_qty]) OVER (PARTITION BY [item_id], [keycust4])  >= 0
我不能在HAVING子句中使用窗口函数,也不能在SELECT语句中使用比较运算符

关于如何使这项工作有效,有什么建议吗

select [keycust4], [item_id]
from [aws_stage]
where [yr] = '2020'
group by [keycust4], [item_id]
having SUM(ISNULL([frcst_qty], 0)) >= 0

试试这个。不确定我是否正确理解了您的问题,请尝试使用下面的子查询,好吗?这将使用窗口函数计算总和,然后对结果使用过滤器。我取消了一年的条件

SELECT
        [item_id]
FROM
        (
                SELECT
                        [item_id],
                        SUM([frcst_qty]) OVER (PARTITION BY  [item_id], [keycust4] ORDER BY [item_id], [keycust4]) sum_qty
                FROM
                        [AWS_Stage] ) subq
WHERE
        sum_qty >=0
GROUP BY
        [item_id]

请以表格形式提供一些示例数据和所需输出