Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.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 server 2005 e、 @发布日期 终点 关闭CurrieyearMain 解除分配CurrMovieyerMain 从列表中获取下一个到@id\u festival\u new、@fromdate、@todate、@festival name 结束 关闭列表 解除分配列表_Sql Server 2005 - Fatal编程技术网

Sql server 2005 e、 @发布日期 终点 关闭CurrieyearMain 解除分配CurrMovieyerMain 从列表中获取下一个到@id\u festival\u new、@fromdate、@todate、@festival name 结束 关闭列表 解除分配列表

Sql server 2005 e、 @发布日期 终点 关闭CurrieyearMain 解除分配CurrMovieyerMain 从列表中获取下一个到@id\u festival\u new、@fromdate、@todate、@festival name 结束 关闭列表 解除分配列表,sql-server-2005,Sql Server 2005,e、 @发布日期 终点 关闭CurrieyearMain 解除分配CurrMovieyerMain 从列表中获取下一个到@id\u festival\u new、@fromdate、@todate、@festival name 结束 关闭列表 解除分配列表 结束 大多数情况下,您可以不使用光标。你的选择似乎很简单,所以我真的不明白你为什么需要一个光标在这里。。。但您的问题含糊不清-请尽量让它更清楚,张贴例如表格结构、样本数据、您需要的样本输出等@marc_s friend iam试图在此处张贴我

e、 @发布日期 终点 关闭CurrieyearMain 解除分配CurrMovieyerMain 从列表中获取下一个到@id\u festival\u new、@fromdate、@todate、@festival name 结束 关闭列表 解除分配列表 结束
大多数情况下,您可以不使用光标。你的选择似乎很简单,所以我真的不明白你为什么需要一个光标在这里。。。但您的问题含糊不清-请尽量让它更清楚,张贴例如表格结构、样本数据、您需要的样本输出等@marc_s friend iam试图在此处张贴我的光标,但它无法张贴问题所在?但是,我也尝试发布那个游标,看起来您在这个存储过程中尝试执行太多的业务/显示逻辑。您最好只从表中提取数据,然后在表示层中进行百分比和类更改。表结构意味着什么?n我想像用户一样检索选择节日下拉列表值,如圣诞节和年份下拉列表值,如2011,因此对于特定的n年节日,电影发行的利润损失等应显示在asp表格中只是我想在这一行中仅在第1和第2种情况下进行更改,但我没有得到什么更改“其中(发布日期介于@fromdate和@todate之间)和territorycat=0”
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO

ALTER procedure [dbo].[Sp_OccasionMovieDetails]

@OrderBy varchar(100),
@year_val varchar(50),
@occasion_val varchar(50)
As


 --[Sp_OccasionMovieDetails] 'Release_Date', '2011', '0'

Set nocount on

declare @Curr_Contri_1 int;
declare @Curr_Contri_2 int;
declare @Curr_Contri_3 int;
declare @Curr_Contri_4 int;
declare @Percent_2 bigint;
declare @Percent_3 bigint;
declare @Percent_4 bigint;
declare @Class_2 varchar(100);
declare @Class_3 varchar(100);
declare @Class_4 varchar(100);
declare @Id_Movie varchar(100);
declare @Release_Date datetime;
declare @MovieTitle varchar(100);
--declare @Id_festival1 varchar(100);
declare @id_festival_new varchar(50);
declare @fromdate varchar(50);
declare @todate varchar(50);
declare @festivalname varchar(50);

--Year All and ocassion Individual selected

if(@year_val='0' and @occasion_val<>'0')
begin

    print '1'

end


----year individual and ocassion individual selected

else if (@year_val<>'0' and @Occasion_val<>'0')
begin 
    print '2'

    declare List cursor for
    select md.id_festival, md.fromdate, md.todate, mf.festivalname  from BTNN_MovieDB_Festival_Details md, BTNN_MovieDB_Festival mf where md.id_festival=mf.id_festival and md.syncoperation<>'D' and mf.syncoperation<>'D' and year(md.fromdate)=@year_val order by mf.festivalname
    OPEN List 
    FETCH NEXT FROM List INTO @id_festival_new, @fromdate, @todate, @festivalname
    WHILE @@FETCH_STATUS = 0
    BEGIN

        select @id_festival_new as id_festival, @fromdate as fromdate, @todate as todate, @festivalname as festivalname, 'occasion' as flag

        declare currMovieYearMain cursor for
        select top 25 id_movie ,movietitle, release_date 
        from (
                select id_movie ,movietitle, release_date 
                from View_Territory
                where (release_date between @fromdate and @todate)and territorycat=0
                group by id_movie ,MovieTitle, release_date
        ) as x
                ORDER BY CASE WHEN @OrderBy = 'MovieTitle' THEN movietitle end,
                         CASE WHEN @OrderBy = 'ReleaseDate' THEN release_date end desc

        open currMovieYearMain
            fetch next from currMovieYearMain into @Id_movie,@MovieTitle,@Release_Date
            while @@fetch_status=0
        begin
            select @Curr_Contri_1=sum(territory_total) from view_territory where territorycat=0
            and id_movie=@Id_movie and week=1
            set @Curr_Contri_1=isnull(@Curr_Contri_1,0)

            select @Curr_Contri_2=sum(territory_total) from view_territory where territorycat=0
            and id_movie=@Id_movie and week=2
            set @Curr_Contri_2=isnull(@Curr_Contri_2,0)

            if @Curr_Contri_1 is not null and @Curr_Contri_1<>0 and @Curr_Contri_2<>0
        begin
            set @Class_2='green'
            set @Percent_2=(cast(@Curr_Contri_2 as bigint)*100)/@Curr_Contri_1

            if @Percent_2>0
        begin
            set @Percent_2=@Percent_2-100
        end
            else
        begin
            set @Percent_2=0
        end

            if @Curr_Contri_1>@Curr_Contri_2
        begin
            set @Percent_2=0-@Percent_2
            set @Class_2='redsmall'
        end

            else if @Curr_Contri_1=@Curr_Contri_2
        begin
            set @Percent_2=0
            set @Class_2=null
        end
        end
            else
        begin
            set @Percent_2=0
            set @Class_2=null
        end

            select @Curr_Contri_3=sum(territory_total) from view_territory where territorycat=0
            and id_movie=@Id_movie and week=3
            set @Curr_Contri_3=isnull(@Curr_Contri_3,0)

            if @Curr_Contri_3=isnull(@Curr_Contri_3,0)

            if @Curr_Contri_2 is not null and @Curr_Contri_2 <> 0 and @Curr_Contri_3 <> 0
        begin
            set @Class_3='green'
            set @Percent_3=(cast(@Curr_Contri_3 as bigint)*100)/@Curr_Contri_2

            if @Percent_3 > 0
        begin
            set @Percent_3=@Percent_3-100
        end
            else 
        begin
            set @Percent_3=0
        end
            if @Curr_Contri_2 > @Curr_Contri_3
        begin
            set @Percent_3=0-@Percent_3
            set @Class_3='redsmall'
        end 
            else if @Curr_Contri_2=@Curr_Contri_3
        begin
            set @Percent_3=0
            set @Class_3=null
        end
        end
            else
        begin
            set @Percent_3=0
            set @Class_3=null
        end

            select @Curr_Contri_4=sum(territory_total) from View_Territory where territorycat=0
            and id_movie=@Id_Movie and week=4
            set @Curr_Contri_4=isnull(@Curr_Contri_4,0)

            if @Curr_Contri_3 is not null and @Curr_Contri_3 <>0 and @Curr_Contri_4 <> 0
        begin
            set @Class_4='green'
            set @Percent_4=(cast(@Curr_Contri_4 as bigint)*100)/@Curr_Contri_3

            if @Percent_4 >0
        begin
            set @Percent_4=@Percent_4-100
        end

            else
        begin
            set @Percent_4=0
        end

            if @Curr_Contri_3>@Curr_Contri_4
        begin
            set @Percent_4=0-@Percent_4
            set @Class_4='redsmall'
        end

            else if @Curr_Contri_3=@Curr_Contri_4
        begin
            set @Percent_4=0
            set @Class_4=null
        end
        end

            else 
        begin
            set @Percent_4=0
            set @Class_4=null
        end

            select @Id_Movie as Id_Movie, @MovieTitle as MovieTitle,@Curr_Contri_1 as Curr_Contri_1, @Curr_Contri_2 as Curr_Contri_2, 
            @Class_2 as Class_2, @Percent_2 as PerChange_2, @Curr_Contri_3 as Curr_Contri_3,
            @Class_3 as Class_3,@Percent_3 as PerChange_3, @Curr_Contri_4 as Curr_Contri_4,
            @Class_4 as Class_4,@Percent_4 as PerChange_4, @Release_Date as Release_Date, 'movies' as flag

            fetch next from currMovieYearMain into @Id_Movie,@Movietitle,@Release_Date
        End
            close CurrMovieYearMain
            Deallocate CurrMovieYearMain

        FETCH NEXT FROM List INTO @id_festival_new, @fromdate, @todate, @festivalname
    END
    CLOSE List
    DEALLOCATE List 
end



----- Year Individual and ocassion All selected
else if(@year_val<>'0' and @Occasion_val='0')
begin

    print '3'

    declare List cursor for
    select md.id_festival, md.fromdate, md.todate, mf.festivalname  from BTNN_MovieDB_Festival_Details md, BTNN_MovieDB_Festival mf where md.id_festival=mf.id_festival and md.syncoperation<>'D' and mf.syncoperation<>'D' and year(md.fromdate)=@year_val order by mf.festivalname
    OPEN List 
    FETCH NEXT FROM List INTO @id_festival_new, @fromdate, @todate, @festivalname
    WHILE @@FETCH_STATUS = 0
    BEGIN

        select @id_festival_new as id_festival, @fromdate as fromdate, @todate as todate, @festivalname as festivalname, 'occasion' as flag

        declare currMovieYearMain cursor for
        select top 25 id_movie ,movietitle, release_date 
        from (
                select id_movie ,movietitle, release_date 
                from View_Territory
                where (release_date between @fromdate and @todate) and territorycat=0
                group by id_movie ,MovieTitle, release_date
        ) as x
                ORDER BY CASE WHEN @OrderBy = 'MovieTitle' THEN movietitle end,
                         CASE WHEN @OrderBy = 'ReleaseDate' THEN release_date end desc

        open currMovieYearMain
            fetch next from currMovieYearMain into @Id_movie,@MovieTitle,@Release_Date
            while @@fetch_status=0
        begin
            select @Curr_Contri_1=sum(territory_total) from view_territory where territorycat=0
            and id_movie=@Id_movie and week=1
            set @Curr_Contri_1=isnull(@Curr_Contri_1,0)

            select @Curr_Contri_2=sum(territory_total) from view_territory where territorycat=0
            and id_movie=@Id_movie and week=2
            set @Curr_Contri_2=isnull(@Curr_Contri_2,0)

            if @Curr_Contri_1 is not null and @Curr_Contri_1<>0 and @Curr_Contri_2<>0
        begin
            set @Class_2='green'
            set @Percent_2=(cast(@Curr_Contri_2 as bigint)*100)/@Curr_Contri_1

            if @Percent_2>0
        begin
            set @Percent_2=@Percent_2-100
        end
            else
        begin
            set @Percent_2=0
        end

            if @Curr_Contri_1>@Curr_Contri_2
        begin
            set @Percent_2=0-@Percent_2
            set @Class_2='redsmall'
        end

            else if @Curr_Contri_1=@Curr_Contri_2
        begin
            set @Percent_2=0
            set @Class_2=null
        end
        end
            else
        begin
            set @Percent_2=0
            set @Class_2=null
        end

            select @Curr_Contri_3=sum(territory_total) from view_territory where territorycat=0
            and id_movie=@Id_movie and week=3
            set @Curr_Contri_3=isnull(@Curr_Contri_3,0)

            if @Curr_Contri_3=isnull(@Curr_Contri_3,0)

            if @Curr_Contri_2 is not null and @Curr_Contri_2 <> 0 and @Curr_Contri_3 <> 0
        begin
            set @Class_3='green'
            set @Percent_3=(cast(@Curr_Contri_3 as bigint)*100)/@Curr_Contri_2

            if @Percent_3 > 0
        begin
            set @Percent_3=@Percent_3-100
        end
            else 
        begin
            set @Percent_3=0
        end
            if @Curr_Contri_2 > @Curr_Contri_3
        begin
            set @Percent_3=0-@Percent_3
            set @Class_3='redsmall'
        end 
            else if @Curr_Contri_2=@Curr_Contri_3
        begin
            set @Percent_3=0
            set @Class_3=null
        end
        end
            else
        begin
            set @Percent_3=0
            set @Class_3=null
        end

            select @Curr_Contri_4=sum(territory_total) from View_Territory where territorycat=0
            and id_movie=@Id_Movie and week=4
            set @Curr_Contri_4=isnull(@Curr_Contri_4,0)

            if @Curr_Contri_3 is not null and @Curr_Contri_3 <>0 and @Curr_Contri_4 <> 0
        begin
            set @Class_4='green'
            set @Percent_4=(cast(@Curr_Contri_4 as bigint)*100)/@Curr_Contri_3

            if @Percent_4 >0
        begin
            set @Percent_4=@Percent_4-100
        end

            else
        begin
            set @Percent_4=0
        end

            if @Curr_Contri_3>@Curr_Contri_4
        begin
            set @Percent_4=0-@Percent_4
            set @Class_4='redsmall'
        end

            else if @Curr_Contri_3=@Curr_Contri_4
        begin
            set @Percent_4=0
            set @Class_4=null
        end
        end

            else 
        begin
            set @Percent_4=0
            set @Class_4=null
        end

            select @Id_Movie as Id_Movie, @MovieTitle as MovieTitle,@Curr_Contri_1 as Curr_Contri_1, @Curr_Contri_2 as Curr_Contri_2, 
            @Class_2 as Class_2, @Percent_2 as PerChange_2, @Curr_Contri_3 as Curr_Contri_3,
            @Class_3 as Class_3,@Percent_3 as PerChange_3, @Curr_Contri_4 as Curr_Contri_4,
            @Class_4 as Class_4,@Percent_4 as PerChange_4, @Release_Date as Release_Date, 'movies' as flag

            fetch next from currMovieYearMain into @Id_Movie,@Movietitle,@Release_Date
        End
            close CurrMovieYearMain
            Deallocate CurrMovieYearMain

        FETCH NEXT FROM List INTO @id_festival_new, @fromdate, @todate, @festivalname
    END
    CLOSE List
    DEALLOCATE List 

end