2013-02-24 2 views
0
Project nr  Task     Task deadline Task Type Production 
--------------------------------------------------------------------------- 
456    packed    1 april 2013  Packed 
456    Leave production  3 april 2013  Leave Production 
456    Flight date   9 april 2013  Flight Date 
123    packed    1 april 2013  Packed 
123    Leave production  6 april 2013  Leave Production 
123    Flight date   9 april 2013  Flight Date 
789    packed    1 april 2013  Packed 
789    Leave production  9 april 2013  Leave Production 
789    Flight date   9 april 2013  Flight Date 

위와 같은 목록이 필요합니다. '생산 중단'날짜를 정렬하고 싶습니다. 프로젝트 nr은 위의 목록과 같이 3 그룹으로되어 있어야합니다.정렬시 다중 부분 식별자 오류

이미이 SQL이 있습니다. 목록이 작동하지만 정렬이 작동하지 않습니다. 오류는 다음과 같습니다.

"작업 [작업 마감 시간]"작업을 바인딩 할 수 없습니다.

나는 이미 제안이 있었지만 여전히 오류가있었습니다. 어떻게 분류 되나요?

Project Nr  Task    TaskDate 
0053   Packed   2013-02-05 17:00:00.000 
0053   Leave Production 2011-04-26 17:00:00.000 
0053   Flight Date  2011-04-22 17:00:00.000 
0071   Leave Production 2011-06-24 17:00:00.000 
0081   Leave Production 2012-03-09 17:00:00.000 
0081-01  Leave Production 2012-03-09 17:00:00.000 

이 SQL 쿼리는 다음과 같습니다 :

내가 얻을 목록입니다

SELECT 
    [Project nr], Task, TaskDate 
FROM  
    (SELECT 
     MSP_EpmProject_UserView.[Project nr] 
     ,MAX(CASE WHEN [Task Type Production] = 'Packed' 
        THEN [Task deadline] 
      END) AS Packed 
     ,MAX(CASE WHEN [Task Type Production] = 'Leave Production' 
        THEN [Task deadline] 
      END) AS [Leave Production] 
     ,MAX(CASE WHEN [Task Type Production] = 'Flight Date' 
        THEN [Task deadline] 
      END) AS [Flight Date] 
    FROM 
     MSP_EpmProject_UserView 
    LEFT JOIN 
     MSP_EpmTask_UserView ON MSP_EpmProject_UserView.ProjectUID = MSP_EpmTask_UserView.ProjectUID 
    LEFT JOIN 
     MSP_EpmAssignment_UserView ON MSP_EpmTask_UserView.TaskUID = MSP_EpmAssignment_UserView.TaskUID 
    LEFT JOIN 
     MSP_EpmResource_UserView ON MSP_EpmAssignment_UserView.ResourceUID = MSP_EpmResource_UserView.ResourceUID 
    WHERE 
     (MSP_EpmTask_UserView.TaskIsProjectSummary = 0) 
    GROUP BY 
     MSP_EpmProject_UserView.[Project nr]) data 
UNPIVOT 
    (TaskDate 
     FOR [Task] IN ([Pack], [Leave Production], [Flight Date]) 
    ) piv 

정렬을해야이 줄 :

ORDER BY data.[Task deadline] 

하지만 오류가 발생합니다

메시지 4104, 수준 16, 상태 1, 줄 62
"data.Taskdeadline"이라는 다중 부분 식별자를 바인딩 할 수 없습니다.

+0

'[Leave Production]'으로 주문하려면 -'주문 마감일'을 지정해야합니다. ([작업 마감일]이 아닌) .... –

답변

0

data는 단지 당신이 당신의 SQL 문에서 볼 수 있듯이 Taskdeadline

라는 열을 반환하지 않습니다 같이 별칭은 하위 쿼리 - 그 하위 쿼리가 열이 포함

[Project nr] 
Packed 
[Leave Production] 
[Flight Date] 

을 하지만 그게 전부예요. 아무도 볼 수없는 Taskdeadline입니다.

따라서 매우 분명히 다음과 같이 할 수 있습니다. ORDER BY 절에 존재하지 않는 열을 사용하지 마십시오.

+0

[ 생산] 동일한 오류가 발생합니다. taskdeadline은 올바른 예가 아니 었습니다. 내가 시험해 본 것. – Anne

관련 문제