Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.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

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 r2.running_值应该是选择列表中的@moneys-r2.running_值。而且,当所有的钱都用完时,查询应该停止。但我喜欢。我喜欢外部应用方法。我会试试看是否可以用它代替CTE。我所做的任务的全部目的是为了更好地练习cte,但在我的日常生活中添加_Sql_Sql Server 2008_Common Table Expression - Fatal编程技术网

Sql r2.running_值应该是选择列表中的@moneys-r2.running_值。而且,当所有的钱都用完时,查询应该停止。但我喜欢。我喜欢外部应用方法。我会试试看是否可以用它代替CTE。我所做的任务的全部目的是为了更好地练习cte,但在我的日常生活中添加

Sql r2.running_值应该是选择列表中的@moneys-r2.running_值。而且,当所有的钱都用完时,查询应该停止。但我喜欢。我喜欢外部应用方法。我会试试看是否可以用它代替CTE。我所做的任务的全部目的是为了更好地练习cte,但在我的日常生活中添加,sql,sql-server-2008,common-table-expression,Sql,Sql Server 2008,Common Table Expression,r2.running_值应该是选择列表中的@moneys-r2.running_值。而且,当所有的钱都用完时,查询应该停止。但我喜欢。我喜欢外部应用方法。我会试试看是否可以用它代替CTE。我所做的任务的全部目的是为了更好地练习cte,但在我的日常生活中添加任何有用的方法都是有价值的@道格拉斯。在SQL Server中,使用变量不是一种典型的方法。您永远不会将值传入或形成过程?@DougCoats。我当然喜欢。我误读了你的密码。我认为@money正在设置中。我认为WHERE子句中的比较运算符应该小


r2.running_值
应该是选择列表中的
@moneys-r2.running_值
。而且,当所有的钱都用完时,查询应该停止。但我喜欢。我喜欢外部应用方法。我会试试看是否可以用它代替CTE。我所做的任务的全部目的是为了更好地练习cte,但在我的日常生活中添加任何有用的方法都是有价值的@道格拉斯。在SQL Server中,使用变量不是一种典型的方法。您永远不会将值传入或形成过程?@DougCoats。我当然喜欢。我误读了你的密码。我认为
@money
正在设置中。我认为
WHERE
子句中的比较运算符应该小于(不等于),因为在第一行中,他希望看到变量的值,我认为在选择列表中应该是
@moneys-r2.running\u value
,而不是
r2.running\u value
。而且,当所有的钱都用完时,查询应该停止。但我喜欢。我喜欢外部应用方法。我会试试看是否可以用它代替CTE。我所做的任务的全部目的是为了更好地练习cte,但在我的日常生活中添加任何有用的方法都是有价值的@道格拉斯。在SQL Server中,使用变量不是一种典型的方法。您永远不会将值传入或形成过程?@DougCoats。我当然喜欢。我误读了你的密码。我还以为钱已经准备好了呢。
DECLARE @monies AS money = 35600.00;

WITH RFRoll AS
(
    SELECT 
        col
        , value
        , Amt = @monies 
    FROM #rfTmp 
    UNION ALL
    SELECT 
        col
        , value
        , CASE 
            WHEN @monies>value then @monies-value
            WHEN value<@monies then @monies-value 
            WHEN value>@monies then @monies-@monies
            END Amt
    FROM #rfTmp 
    WHERE 
        CASE 
            WHEN @monies>value then @monies-value
            WHEN value<@monies then @monies-value 
            WHEN value>@monies then @monies-@monies
            END >0
)
SELECT * 
FROM RFRoll 
select r.*, r2.running_value
from #rftmp r outer apply
     (select sum(r2.value) as running_value
      from #rftmp r2
      where r2.col <= r.col
     ) t2;
declare @monies  as money = 35600.00;
WITH RFRoll as
    (
    SELECT 
        #rfTmp.*
        , CASE 
            WHEN @monies>=value then value
            WHEN value<@monies then value 
            WHEN value>@monies then @monies
            END AS Amt
        , CASE 
            WHEN @monies>=value then value
            WHEN value<@monies then value 
            WHEN value>@monies then @monies
            END AS ValueUsed        
    FROM #rfTmp WHERE [No] = 1
    UNION ALL
    SELECT
        v.*
        , RFRoll.Amt + CASE 
            WHEN v.value>@monies-RFRoll.Amt then @monies-RFRoll.Amt
            WHEN v.value<@monies-RFRoll.Amt then v.value 
            WHEN @monies-RFRoll.Amt>v.value then v.value
            END
        , CASE 
            WHEN v.value>@monies-RFRoll.Amt then @monies-RFRoll.Amt
            WHEN v.value<@monies-RFRoll.Amt then v.value 
            WHEN @monies-RFRoll.Amt>v.value then v.value
            END
    FROM #rfTmp v INNER JOIN RFRoll ON v.[No] = RFRoll.[No] + 1
    WHERE RFRoll.Amt<@monies 
    )
    SELECT * FROM RFRoll