Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何按表达式进行分区_Sql_Sql Server 2008 - Fatal编程技术网

Sql 如何按表达式进行分区

Sql 如何按表达式进行分区,sql,sql-server-2008,Sql,Sql Server 2008,我想用表达式而不是字段进行分区。接受这个查询 SELECT ID, Value, Status, SUM(Value) OVER(PARTITION BY ID) AS "Sum", COUNT(*) OVER(PARTITION BY ID, Status = 'Ready') AS ReadyCount --Error here FROM TestAggregation 我需要获得分组状态的ReadyCount,但只需要将计数应

我想用表达式而不是字段进行分区。接受这个查询

SELECT 
      ID,
      Value,
      Status,
      SUM(Value) OVER(PARTITION BY ID) AS "Sum",
      COUNT(*) OVER(PARTITION BY ID, Status = 'Ready') AS ReadyCount --Error here
FROM TestAggregation

我需要获得分组状态的ReadyCount,但只需要将计数应用于就绪状态。这可能吗?

您可以使用条件和:

SELECT 
      ID,
      Value,
      Status,
      SUM(Value) OVER(PARTITION BY ID) AS "Sum",
      SUM(CASE WHEN Status = 'Ready' THEN 1 ELSE 0 END) OVER(PARTITION BY ID) AS ReadyCount --Error here
FROM TestAggregation

在查看文档中的OVER条款后,我删除了该评论。