如何按表达式进行分区
How to partition by an expression
我想按表达式而不是字段进行分区。接受这个查询
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
我需要获取分组 Status 的 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
我想按表达式而不是字段进行分区。接受这个查询
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
我需要获取分组 Status 的 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