当前位置: 代码迷 >> Sql Server >> sql 存储过程怎么写
  详细解决方案

sql 存储过程怎么写

热度:25   发布时间:2016-04-24 09:42:52.0
sql 存储过程如何写

想要得出这样的结果 
SH600000 这只股票  按照时间排序 以后   240行一下 包括240行  每行的字段[n1日均价]等于   向前溯源n个日(含当日)的成交额之和/成交量之和
比如
代码                 成交额                  成交量                       [n1日均价]      
  SH600000       56456                 34534534534      
...........
........
..........
.........
.........
..........
如果小于等于240行 不计算   如果大于240行    241 行往下包含241  每一行的  [n1日均价] 都等于  向前溯源240个日(含当日)的成交额之和/成交量之和
存储过程如何写   大侠帮忙写写, 240 和代码 都是个变量 
------解决思路----------------------
ALTER PROCEDURE [dbo].[cijunjia]
    @CODE VARCHAR(50)--代码
    ,@DAYCOUNT INT--天数
AS
BEGIN
    DECLARE @COUNT INT
    SELECT @COUNT=SUM(1)FROM linshi WHERE 代码=@CODE
    IF @COUNT<@DAYCOUNT
    BEGIN
        RETURN
    END
    ;WITH CTE AS(
        SELECT ROW_NUMBER()OVER(ORDER BY 时间)RN,* FROM linshi WHERE 代码=@CODE
    )
    UPDATE A
    SET [日均价]=T.[n1次均价]
    FROM
        CTE A JOIN
        (SELECT T1.RN,SUM(CONVERT(float,T2.[成交额(元)]))/SUM(CONVERT(float,T2.[成交量(股)]))[n1次均价]
            FROM CTE T1
                LEFT JOIN CTE T2 ON T1.RN>=T2.RN AND T1.RN-T2.RN<@DAYCOUNT
            WHERE T1.RN>@DAYCOUNT
            GROUP BY T1.RN,T1.代码,T1.[成交额(元)],T1.[成交量(股)],T1.时间
        )T ON A.RN=T.RN
END

最好是加在红色的那个位置
  相关解决方案