Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.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 - Fatal编程技术网

SQL视图,基于带计算的最后一行的新列

SQL视图,基于带计算的最后一行的新列,sql,Sql,提前感谢您的关注。我有一个如下所示的结构表。我需要第三列,第一个指标的值必须是4250+valores,但从第二个指标开始,必须是返回结果,加上第二个指标valores,条件是:如果总和大于4250,那么这个指标的第三列必须是4250,以便对下一个指标的导入求和 下面是Excel中的示例 似乎类似于 编辑: 根据您的评论,您没有在没有条件的情况下计算结果,但是,您需要一个嵌套计算: SELECT dt.*, result_without_condition - Max(Great

提前感谢您的关注。我有一个如下所示的结构表。我需要第三列,第一个指标的值必须是4250+valores,但从第二个指标开始,必须是返回结果,加上第二个指标valores,条件是:如果总和大于4250,那么这个指标的第三列必须是4250,以便对下一个指标的导入求和

下面是Excel中的示例

似乎类似于

编辑:

根据您的评论,您没有在没有条件的情况下计算结果,但是,您需要一个嵌套计算:

SELECT dt.*,
   result_without_condition
     - Max(Greatest(CASE WHEN "index" > 1 THEN Result_without_condition - 4250 ELSE 0 END,0))
       Over (ORDER BY "index"
             ROWS Unbounded Preceding)
FROM
 (
   SELECT tab.*,
      Sum("value")
      Over (ORDER BY "index"
            ROWS Unbounded Preceding) 
      + 4250 AS Result_without_condition
   FROM tab
 ) AS dt

我已经删除了那些相互冲突的dbms标记。将其中一个放回原处,即实际使用的dbms。以格式化文本而非图像的形式向我们展示一些示例表数据和预期结果。也请阅读-使其易于帮助您!嘿,凯文,在你的excel中,我在第三行看到了很多大于4250的值。你说:如果总和大于4250,那么这个指标的第三列必须是4250Hi@zip我想要得到的列是Result,因为有条件,没有条件的列Result是我今天得到的。我没有正确解释,excel中的第三列和第四列是我期望的结果,但是计算必须使用值列,顺便说一句,你的答案给我一个想法,可以找到第一行的计算:选择indice,valores,resultado_2从select i1.indice,i1.valores,i2.resultado as resultado_2从indice as i1左连接select indice,valores+4250 as resultado,按指数排列的行数按指数排列asc从指数排列为新的,其中指数=1,按指数排列,valores i2在i1上。指数=i2。按指数排列的总组数,valores,结果按指数排列。我需要计算4266-500,如果此结果大于4250,则此新计算的结果将为4250。
SELECT dt.*,
   result_without_condition
     - Max(Greatest(CASE WHEN "index" > 1 THEN Result_without_condition - 4250 ELSE 0 END,0))
       Over (ORDER BY "index"
             ROWS Unbounded Preceding)
FROM
 (
   SELECT tab.*,
      Sum("value")
      Over (ORDER BY "index"
            ROWS Unbounded Preceding) 
      + 4250 AS Result_without_condition
   FROM tab
 ) AS dt