oracle归零重新求和
时间: 2023-08-03 21:06:48 浏览: 49
要在Oracle中将某列归零并重新求和,您可以使用窗口函数和条件判断来实现。以下是一个示例的SQL查询:
```sql
SELECT column_name,
CASE WHEN reset_condition THEN 0 ELSE SUM(column_name) OVER (ORDER BY column_name) END AS sum
FROM (
SELECT column_name,
CASE WHEN column_name > your_threshold THEN 1 ELSE 0 END AS reset_condition
FROM your_table
) t;
```
在上面的查询中,您需要将`column_name`替换为实际的列名,并将`your_table`替换为实际的表名。该查询使用了`SUM`函数和`OVER`子句来计算累计求和,并通过`CASE`语句判断是否满足归零条件。如果满足归零条件,则将累计值设为0;否则,保持累计值不变。
请注意,您需要将`your_threshold`替换为实际的阈值。这个查询会返回包含原始列和重新求和列的结果集,其中根据归零条件计算出的累计求和值。
相关问题
oracle累计求和,大于某个数后归零重新求和
您可以使用Oracle的窗口函数和条件判断来实现累计求和,并在大于某个数后将累计值归零重新求和。以下是一个示例的SQL查询:
```sql
SELECT column_name,
CASE WHEN cum_sum > your_threshold THEN 0 ELSE cum_sum END AS sum
FROM (
SELECT column_name,
SUM(column_name) OVER (ORDER BY column_name) AS cum_sum
FROM your_table
) t;
```
在上面的查询中,您需要将`column_name`替换为实际的列名,并将`your_table`替换为实际的表名。该查询使用了`SUM`函数和`OVER`子句来计算累计求和,然后通过`CASE`语句判断累计值是否大于某个阈值,如果大于则将值设为0,否则保持累计值不变。
请注意,您需要将`your_threshold`替换为实际的阈值。这个查询会返回包含原始列和累计求和列的结果集,其中大于阈值的累计求和值将被置为0。
oracle case when 求和
对于 Oracle 数据库,你可以使用 CASE WHEN 结构来根据条件进行求和操作。下面是一个示例:
```
SELECT
SUM(
CASE WHEN condition1 THEN column1 ELSE 0 END +
CASE WHEN condition2 THEN column2 ELSE 0 END
-- 可以继续添加更多的条件和列
) AS sum_result
FROM
your_table;
```
在上面的示例中,你可以根据需要添加更多的条件和列。条件可以是任何逻辑表达式,而列可以是数据库表中的任何列。根据满足条件的行,每个 CASE WHEN 子句都会返回相应的列值或零。最后,使用 SUM 函数对所有条件的结果进行求和,并将结果命名为 `sum_result`。请将 `your_table` 替换为你要执行求和操作的实际表名。