2013-05-23 3 views
0

나는 다음과 같은 코드만남 오류 해결하는 것 같지 수

SELECT dbo.COL_V_Cost_GEMS_Detail.TNG_SYS_NR AS [EHP Code], 
     dbo.COL_TBL_VCOURSE_NEW.TNG_NA AS [Course Title], 
     dbo.COL_TBL_VCOURSE_NEW.FCT_TYP_CD & dbo.COL_TBL_VCOURSE_NEW.DEP_TYP_CD AS [Course Owner], 
     dbo.COL_TBL_VCOURSE_TYP.TNG_DESC AS [TYPE OF TRAINING], 
     dbo.COL_V_Cost_GEMS_Detail.JOB_FCT_CD, 
     dbo.COL_V_Cost_GEMS_Detail.JOB_GRP_CD, 
     dbo.COL_V_Cost_GEMS_Detail.ST_COST_SUM + dbo.COL_V_Cost_GEMS_Detail.IN_COST_SUM AS [Total Cost], 
     SUM(dbo.COL_V_Cost_GEMS_Detail.STUDENTS) AS SumOfSTUDENTS, 
     SUM(dbo.COL_V_Cost_GEMS_Detail.INSTRUCTORS) AS SumOfINSTRUCTORS, 
     SUM(dbo.COL_V_Cost_GEMS_Detail.ST_HOURS_SUM) AS ST_HOURS, 
     SUM(dbo.COL_V_Cost_GEMS_Detail.ST_COST_SUM) AS ST_COST, 
     SUM(dbo.COL_V_Cost_GEMS_Detail.IN_HOURS_SUM) AS IN_HOURS, 
     SUM(dbo.COL_V_Cost_GEMS_Detail.IN_COST_SUM) AS IN_COST 
FROM dbo.COL_V_Cost_GEMS_Detail INNER JOIN dbo.COL_TBL_VCOURSE_NEW 
     ON dbo.COL_V_Cost_GEMS_Detail.TNG_SYS_NR = dbo.COL_TBL_VCOURSE_NEW.TNG_SYS_NR  
     INNER JOIN dbo.COL_TBL_VCOURSE_TYP 
     ON dbo.COL_TBL_VCOURSE_NEW.TNG_MDA_TYP_CD = dbo.COL_TBL_VCOURSE_TYP.TNG_TYP 
WHERE (dbo.COL_V_Cost_GEMS_Detail.RRDD NOT LIKE '%12%') 
     AND 
     (dbo.COL_V_Cost_GEMS_Detail.RRDD NOT LIKE '%13%') 
     AND 
     (dbo.COL_V_Cost_GEMS_Detail.RRDD NOT LIKE '%2706%') 
     AND 
     (dbo.COL_V_Cost_GEMS_Detail.RRDD NOT LIKE '%2707%') 
     AND 
     (dbo.COL_V_Cost_GEMS_Detail.RRDD NOT LIKE '%2331%') 
GROUP BY dbo.COL_V_Cost_GEMS_Detail.TNG_SYS_NR, 
     dbo.COL_TBL_VCOURSE_NEW.TNG_NA, 
     dbo.COL_TBL_VCOURSE_NEW.FCT_TYP_CD & dbo.COL_TBL_VCOURSE_NEW.DEP_TYP_CD,   
     dbo.COL_TBL_VCOURSE_TYP.TNG_DESC, 
     dbo.COL_V_Cost_GEMS_Detail.JOB_FCT_CD, 
     dbo.COL_V_Cost_GEMS_Detail.JOB_GRP_CD, 
     dbo.COL_V_Cost_GEMS_Detail.ST_COST_SUM + 
     dbo.COL_V_Cost_GEMS_Detail.IN_COST_SUM 

내가

Msg 402, Level 16, State 1, Line 1 
The data types nvarchar and nvarchar are incompatible in the boolean AND operator. 

는 상관없이 어떤 변화 내가이 오류를 제거 할 수없는 것하지 않습니다 오류가 계속에게 있습니다. 처음에는 데이터 유형이 될 것이라고 생각했지만 모두 괜찮 았고 심볼의 일부라고 생각했지만 교체하는 것은 효과가 없었습니다.

+4

이 쿼리는 엉망으로 보입니다 ... 일부 별칭을 사용하십시오. – Kasyx

+2

오류와 무관 한 모든 것을 제거하십시오. 읽기가 힘듭니다. – Jan

+3

&를 사용하는 이유는 무엇입니까? 당신이 + 또는, & – Dhwani

답변

1

&을 삭제했습니다. 이것이 작동하는지 여부를 확인하십시오.

SELECT dbo.COL_V_Cost_GEMS_Detail.TNG_SYS_NR AS [EHP Code], dbo.COL_TBL_VCOURSE_NEW.TNG_NA AS [Course Title], 
      dbo.COL_TBL_VCOURSE_NEW.FCT_TYP_CD, dbo.COL_TBL_VCOURSE_NEW.DEP_TYP_CD AS [Course Owner], 
      dbo.COL_TBL_VCOURSE_TYP.TNG_DESC AS [TYPE OF TRAINING], dbo.COL_V_Cost_GEMS_Detail.JOB_FCT_CD, dbo.COL_V_Cost_GEMS_Detail.JOB_GRP_CD, 
      dbo.COL_V_Cost_GEMS_Detail.ST_COST_SUM + dbo.COL_V_Cost_GEMS_Detail.IN_COST_SUM AS [Total Cost], SUM(dbo.COL_V_Cost_GEMS_Detail.STUDENTS) 
      AS SumOfSTUDENTS, SUM(dbo.COL_V_Cost_GEMS_Detail.INSTRUCTORS) AS SumOfINSTRUCTORS, SUM(dbo.COL_V_Cost_GEMS_Detail.ST_HOURS_SUM) 
      AS ST_HOURS, SUM(dbo.COL_V_Cost_GEMS_Detail.ST_COST_SUM) AS ST_COST, SUM(dbo.COL_V_Cost_GEMS_Detail.IN_HOURS_SUM) AS IN_HOURS, 
      SUM(dbo.COL_V_Cost_GEMS_Detail.IN_COST_SUM) AS IN_COST 
FROM dbo.COL_V_Cost_GEMS_Detail INNER JOIN 
      dbo.COL_TBL_VCOURSE_NEW ON dbo.COL_V_Cost_GEMS_Detail.TNG_SYS_NR = dbo.COL_TBL_VCOURSE_NEW.TNG_SYS_NR INNER JOIN 
      dbo.COL_TBL_VCOURSE_TYP ON dbo.COL_TBL_VCOURSE_NEW.TNG_MDA_TYP_CD = dbo.COL_TBL_VCOURSE_TYP.TNG_TYP 
WHERE (dbo.COL_V_Cost_GEMS_Detail.RRDD NOT LIKE '%12%') AND (dbo.COL_V_Cost_GEMS_Detail.RRDD NOT LIKE '%13%') AND 
      (dbo.COL_V_Cost_GEMS_Detail.RRDD NOT LIKE '%2706%') AND (dbo.COL_V_Cost_GEMS_Detail.RRDD NOT LIKE '%2707%') AND 
      (dbo.COL_V_Cost_GEMS_Detail.RRDD NOT LIKE '%2331%') 
GROUP BY dbo.COL_V_Cost_GEMS_Detail.TNG_SYS_NR, dbo.COL_TBL_VCOURSE_NEW.TNG_NA, 
      dbo.COL_TBL_VCOURSE_NEW.FCT_TYP_CD, dbo.COL_TBL_VCOURSE_NEW.DEP_TYP_CD, dbo.COL_TBL_VCOURSE_TYP.TNG_DESC, 
      dbo.COL_V_Cost_GEMS_Detail.JOB_FCT_CD, dbo.COL_V_Cost_GEMS_Detail.JOB_GRP_CD, 
      dbo.COL_V_Cost_GEMS_Detail.ST_COST_SUM + dbo.COL_V_Cost_GEMS_Detail.IN_COST_SUM 

또는 u는 다음 합계를 할 수 있습니다 :

SELECT dbo.COL_V_Cost_GEMS_Detail.TNG_SYS_NR AS [EHP Code], dbo.COL_TBL_VCOURSE_NEW.TNG_NA AS [Course Title], 
       dbo.COL_TBL_VCOURSE_NEW.FCT_TYP_CD + dbo.COL_TBL_VCOURSE_NEW.DEP_TYP_CD AS [Course Owner], 
       dbo.COL_TBL_VCOURSE_TYP.TNG_DESC AS [TYPE OF TRAINING], dbo.COL_V_Cost_GEMS_Detail.JOB_FCT_CD, dbo.COL_V_Cost_GEMS_Detail.JOB_GRP_CD, 
       dbo.COL_V_Cost_GEMS_Detail.ST_COST_SUM + dbo.COL_V_Cost_GEMS_Detail.IN_COST_SUM AS [Total Cost], SUM(dbo.COL_V_Cost_GEMS_Detail.STUDENTS) 
       AS SumOfSTUDENTS, SUM(dbo.COL_V_Cost_GEMS_Detail.INSTRUCTORS) AS SumOfINSTRUCTORS, SUM(dbo.COL_V_Cost_GEMS_Detail.ST_HOURS_SUM) 
       AS ST_HOURS, SUM(dbo.COL_V_Cost_GEMS_Detail.ST_COST_SUM) AS ST_COST, SUM(dbo.COL_V_Cost_GEMS_Detail.IN_HOURS_SUM) AS IN_HOURS, 
       SUM(dbo.COL_V_Cost_GEMS_Detail.IN_COST_SUM) AS IN_COST 
    FROM dbo.COL_V_Cost_GEMS_Detail INNER JOIN 
       dbo.COL_TBL_VCOURSE_NEW ON dbo.COL_V_Cost_GEMS_Detail.TNG_SYS_NR = dbo.COL_TBL_VCOURSE_NEW.TNG_SYS_NR INNER JOIN 
       dbo.COL_TBL_VCOURSE_TYP ON dbo.COL_TBL_VCOURSE_NEW.TNG_MDA_TYP_CD = dbo.COL_TBL_VCOURSE_TYP.TNG_TYP 
    WHERE (dbo.COL_V_Cost_GEMS_Detail.RRDD NOT LIKE '%12%') AND (dbo.COL_V_Cost_GEMS_Detail.RRDD NOT LIKE '%13%') AND 
       (dbo.COL_V_Cost_GEMS_Detail.RRDD NOT LIKE '%2706%') AND (dbo.COL_V_Cost_GEMS_Detail.RRDD NOT LIKE '%2707%') AND 
       (dbo.COL_V_Cost_GEMS_Detail.RRDD NOT LIKE '%2331%') 
    GROUP BY dbo.COL_V_Cost_GEMS_Detail.TNG_SYS_NR, dbo.COL_TBL_VCOURSE_NEW.TNG_NA, 
       dbo.COL_TBL_VCOURSE_NEW.FCT_TYP_CD + dbo.COL_TBL_VCOURSE_NEW.DEP_TYP_CD, dbo.COL_TBL_VCOURSE_TYP.TNG_DESC, 
       dbo.COL_V_Cost_GEMS_Detail.JOB_FCT_CD, dbo.COL_V_Cost_GEMS_Detail.JOB_GRP_CD, 
       dbo.COL_V_Cost_GEMS_Detail.ST_COST_SUM + dbo.COL_V_Cost_GEMS_Detail.IN_COST_SUM 
1

& 변경하려고 시도한 것 같습니다!

1

문자열을 연결하는 & Bitwise operator을 사용하고 있습니다. select 문 모두에서

dbo.COL_TBL_VCOURSE_NEW.FCT_TYP_CD & dbo.COL_TBL_VCOURSE_NEW.DEP_TYP_CD, 

dbo.COL_TBL_VCOURSE_NEW.FCT_TYP_CD + dbo.COL_TBL_VCOURSE_NEW.DEP_TYP_CD 

사람 : String concatenation

변경 (또는 당신이 CONCAT 기능을 사용할 수 있습니다 SQL-서버 2012을 사용할 수 있습니다) SQL-Server의 +를 사용 그리고 group by 절.

+0

의 자리에 로그인하고 싶다고 생각합니다. 여전히 오류가 발생했습니다. – user2119980

+0

그룹별로 변경 했습니까? – GarethD

관련 문제