2011-09-28 3 views
3

나는 다음 SQL 저장 프로 시저를 저장하려고 할 때 마지막 선택 문에서 "잘못된 열 이름 '목표' '에 대해 불평합니다.이것은 왜 SQL에 저장된 잘못된 열입니까 proc입니까?

왜 이것이 잘못된 조합 이름인지 알려주실 수 있습니까? NetSales에 대해 기본적으로 동일한 작업을 수행하고 있으며 해당 열에 대해 불평하지 않습니다.

if object_id('tempdb..#tmpHours') is not null 
    DROP TABLE #tmpHours 
if object_id('tempdb..#tmpPay') is not null 
    DROP TABLE #tmpPay 

SET @MondayOfCurrentWeek = (SELECT DATEADD(wk, DATEDIFF(wk,0,@WeekOf), 0)) 

SELECT p.PerceptionistID AS PerceptionistID, p.BaseCommission AS BaseCommission, p.BonusCommission AS BonusCommission, 
     h.WeekOf AS WeekOf, h.WorkHours AS WorkHours, h.PTOHours AS PTOHours, h.HolidayHours AS HolidayHours, 
     ROUND(h.WorkHours, 0) AS HoursRounded, 
     (
      SELECT COUNT(c.PerceptionistID) 
      FROM T_Call c 
      WHERE 
       c.PerceptionistID = p.PerceptionistID 
       AND c.OutcomeID = @OutcomeSale 
       AND EnteredOn BETWEEN @MondayOfCurrentWeek AND DATEADD(dd, 7, @MondayOfCurrentWeek) 
     ) AS GrossSales, 
     (
      SELECT COUNT (c.PerceptionistID) 
      FROM T_CallCredit cc 
       INNER JOIN T_Call c 
        ON cc.CallID = c.CallID 
      WHERE 
       c.PerceptionistID = p.PerceptionistID 
       AND cc.CallCreditStatusID NOT IN (17, 18) -- 17 - 'Error in Customer Account', 18 - 'Courtesy Credit' 
       AND cc.EnteredOn BETWEEN @MondayOfCurrentWeek AND DATEADD(dd, 7, @MondayOfCurrentWeek) 
     ) AS Credits 

INTO #tmpHours 
FROM T_Perceptionist p 
    RIGHT JOIN T_PerceptionistHours h 
     ON p.PerceptionistID = h.PerceptionistID 
WHERE h.WeekOf = @MondayOfCurrentWeek 


SELECT PerceptionistID, CAST((HoursRounded*2) AS int) AS Goal, GrossSales, Credits, (GrossSales - Credits) AS NetSales, 
     HoursRounded, WorkHours, PTOHours, HolidayHours, BaseCommission, BonusCommission, 
     [dbo].fnCalculateCommission(BaseCommission, BonusCommission, (GrossSales - Credits), CAST((HoursRounded*2) AS int)) AS CommissionPay 
INTO #tmpPay  
FROM #tmpHours 


--- Complains about column name 'Goal' in the following statement 
SELECT PerceptionistID, Goal, GrossSales, Credits, NetSales, HoursRounded, WorkHours, PTOHours, 
     HolidayHours, BaseCommission, BonusCommission, CommissionPay 
FROM #tmpPay 

답변

6

새로운 연결에서 실행하거나 별도의 배치에서 임시 테이블을 삭제하십시오. 당신이 Goal 열이하지 않았고 파서가 기존 테이블에 대해 열 이름을 검증하는 바인딩 오류가 발생하고 일괄 처리를 실행하는 것을 거부 할 때

는 아마도 #temp 테이블은 여전히 ​​이전 배치에서 약 걸려있다.

임시 테이블이 존재하지 않으면 모든 명령문 컴파일이 지연됩니다.

+0

감사합니다. – BrianKE

관련 문제