1

クエリの作成に取り組んでいますが、見つけられなかった問題があります。これが私のコードです

begin
    declare @v_max int
    declare @v_count int
    declare @sessionID int
    declare @sessionStart datetime
    declare @sessionEnd datetime

    declare my_cursor cursor local for
        select * from Test;

    open my_cursor
    fetch next from my_cursor INTO @sessionID, @sessionStart, @sessionEnd

    while @@FETCH_STATUS = 0
    begin
        select *  into **@v_count**
        from [dbo].[Test]
        WHERE **[dbo].[Test].[SessionStartTime]** > @sessionStart
        OR **[dbo].[Test].[SessionCloseTime]** < @sessionEnd

        if @v_count > @v_max 
            set @v_max = @v_count


        fetch next from my_cursor INTO @sessionID, @sessionStart, @sessionEnd
    end

    print @v_max;

    close my_cursor
    deallocate my_cursor
end 

太字の領域には問題があります。

メッセージ 207、レベル 16、状態 1、行 18
列名 'SessionStartTime' が無効です。
メッセージ 207、レベル 16、状態 1、行 19
列名 'SessionCloseTime' が無効です。
メッセージ 102、レベル 15、状態 1、行 16
'@v_count' 付近の構文が正しくありません。

これが私のテーブルです

CREATE TABLE [dbo].[Test]( 
    [ScenarioID] [bigint] NULL, 
    [SessionStartTime] [datetime] NOT NULL, 
    [SessionCloseTime] [datetime] NULL 
) ON [PRIMARY] 

これが私のテーブルです

CREATE TABLE [dbo].[Test](
    [ScenarioID] [bigint] NULL,
    [SessionStartTime] [datetime] NOT NULL,
    [SessionCloseTime] [datetime] NULL
) ON [PRIMARY]

GO
4

2 に答える 2

5

@v_countintは、テーブルとしてではなく、クエリの先頭でとして宣言されています。そこでは使えませんSELECT * INTO @v_count

于 2012-10-23T12:24:43.467 に答える