2017-10-23 7 views
0

이 작업을 수행하는 방법에 대한 몇 가지 예를 살펴 보았지만 쿼리에 대한 연결을 끊을 수는 없습니다. 도움이 필요하면 고맙겠습니다.하위 쿼리에 SQL 조인

SELECT fe.NAME, fe.[FEE-EARNER], SUM(CONVERT(decimal(10, 2), CONVERT(numeric,t.[TIME-SPENT])/60)) AS Time, SUM(t.[CURR-VALUE]) AS WIP 

FROM PUB1_TRTRANS t 
LEFT JOIN PUB1_FEETR fe on t.[FEE-EARNER]=fe.[FEE-EARNER] 
LEFT JOIN PUB1_DEPARTMENT d on fe.DEPARTMENT=d.[DEPARTMENT-CODE] 
LEFT JOIN PUB1_MATDB m on t.[MT-CODE]=m.[MT-CODE] 

LEFT JOIN 
(
select [FEE-EARNER], sum([time-spent])/60 
FROM dbo.PUB1_TRTRANS 
WHERE ([ACT-CODE] <> N'BILL') AND (UNDONE = 0) AND ([ACT-CODE] <> N'CN') 
and [YEAR]='2018' 
and right([act-code], 1)<>'C' 
and right([act-code], 1)<>'N' 
and left([act-code], 1)<>'X' 
and left([act-code], 3)<>'00N' 
GROUP BY [FEE-EARNER] 
) t2 ON t2.[fee-earner]=t.[fee-earner] 

WHERE t.[bill-no] is null and t.undone=0 and t.billtx=0 AND t.[MT-CODE] IS NOT NULL 
GROUP BY d.[DEPARTMENT-DESCRIPTION], fe.DEPARTMENT ORDER BY WIP DESC# 

내부 쿼리와 외부 쿼리 모두 괜찮습니다. [FEE-EARNER] 필드에서 두 개를 조인 할 수 없습니다.

+0

은 대소 문자를 구분합니까? [fee-earner] 대 [FEE-EARNER]입니까? "너는 둘을 같이 할 수 없다"는 것은 무엇을 의미합니까? 무슨 일이야? 만약 당신이 오류가 발생합니까? 부적절한 결과가 나옵니까? 당신이 생각하는 두 가지 기록의 예를 들려 줄 수 있습니까? 동일한 데이터 유형의 두 레코드입니다. 하나는 스페이스 패딩을 사용하고 다른 하나는 스페이스 패딩을 사용합니까? 이 경우에 하나를 다듬을 필요가 있습니까? 조인을 유발하는 다른 비 표시 문자가 단순히 실패합니까? – xQbert

+0

또한 오류 메시지는 무엇입니까? – ViKiNG

+0

내가받을 오류 메시지는 8155, 수준 16, 상태 2, 줄 21 메시지입니다. 't2'열 2에 대해 열 이름이 지정되지 않았습니다. 따라서 쿼리는 전혀 실행되지 않습니다. [FEE-EARNER] 필드는 동일한 데이터 유형이며 쿼리는 대/소문자를 구분하지 않습니다. –

답변

0

오류를 더 자세히 읽은 후에 내부 쿼리에서 sum ([time-spent])/60 AS ChargeableTime으로 변경해야한다는 것을 알았습니다. 즉, 내 sum ([time-spent ])/60 계산 이름.