2012-10-23 2 views
0

쿼리를 작성하고 있지만 찾을 수없는 문제가 있습니다. 다음은 굵게 표시된 부분이 문제가SQL Server : "잘못된 열 이름"가져 오기

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'.
메시지 수준 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 

답변

3

Select into 테이블을 만들어 내 표입니다.

당신은 또한 일상의 시작 @v_max initalise 필요

select @v_count = count(*) 
from [dbo].[Test] 
... 

을 할 수 있습니다.

다른 문제에 관해서는
set @v_max = 0 

, 당신은 당신의 시험 테이블에 SessionStartTime 및 SessionCloseTime라는 열을해야합니까?

+0

예.하지만이 문제가 발생하는 이유를 모르겠습니다. – cihata87

+0

@ cihata87 질문에 표 구조를 표시하십시오. – podiluska

+0

구조체를 추가했습니다. – cihata87

5

@v_count은 으로 쿼리 초기에 표로 표시됩니다. 거기에 SELECT * INTO @v_count을 사용할 수 없습니다.

+0

감사합니다. Spontifixus – cihata87