2011-10-12 2 views
2

stf.PrimarySchoolID (정수)을이 기존 쿼리에 추가하려고합니다. 이 SQL 문을 사용하여 CSV를 내보내는 박쥐 파일이 있습니다. 나는 내 보낸 CSV를 열 때 그러나, 나는이 오류가 :나는 무엇이 누락 되었습니까? SQL 변환 실패

Msg 245, Level 16, State 1, Server [SERVER NAME], Line 13 
Conversion failed when converting the varchar value ',"' to data type int. 

참고 : stf.StaffNumber 그것은 알파 - 숫자이며, 정수가 아닙니다.

SET NOCOUNT ON; 

SELECT '"'+ 
    stf.StaffNumber +'","'+ 
    stf.LastName +'","'+ 
    stf.FirstName +'","' + 
    COALESCE(u.username, '')+'","'+ 
    COALESCE(sfc.[NAME],'') +'",'+ 
    stf.PrimarySchoolID 
FROM dbo.UDF_GetCurrentAcademicSessions() cur 
    JOIN dbo.Course c ON c.AcadSessionID = cur.AcadSessionId    
    JOIN dbo.Staff stf ON stf.StaffID = c.PrimaryTeacherID 
    JOIN dbo.StaffClassification sfc ON sfc.StaffClassificationID = stf.PrimaryClassificationID 
    LEFT OUTER JOIN dbo.[User] u ON u.UserID = stf.UserID 

내 부분에 실수를 나타 냅니까? SQL 문에 대해서는 경험이별로 없기 때문에 도움을받을 수 있습니다.

답변

1

하면에 추가하기 전에 VARCHAR에 stf.StaffNumber를 전송 해 봅니다 :

CAST(stf.StaffNumber AS VARCHAR) 

같은 당신이 문자열을 추가하고 모든 숫자 값에 적용됩니다.

편집 나는이 모든 것을 포함한다고 생각 : 하나 개의 조건이 어디 보조 노트에

SELECT '"'+  
CAST(stf.StaffNumber AS VARCHAR) +'",'+  
CAST(stf.PrimarySchoolID AS VARCHAR) +',"'+  
stf.LastName +'","'+  
stf.FirstName +'","' +  
ISNULL(u.username, '')+'","'+  
ISNULL(sfc.[NAME],'') +'",'+  
CAST(stf.PrimarySchoolID AS VARCHAR) 

, 당신이 경우에 ISNULL를 사용해야합니다. COALESCE 잘 작동하지만 그것은 즉 COALESCE(Col1, Col2, Col3, Col4)

+0

그건 문제였습니다. COALESCE에 대한 정보에 감사 드리며 감사드립니다. 그러나 모든 사람들의 대답은 정확했다. 나는 당신이 그것을 선택했다. * 나의 자신의 일을하는 또 다른 오류에 대한 픽스를 포함하고 : * stf.PrimarySchoolID를 반복했다 : P – joshmax

+0

다행 니면 :) –

1

변경에게, 여러 조건에 대한 SELECT의 마지막 줄을 유선있어 :

CAST(stf.PrimarySchoolID as varchar)

+0

그게 문제였다. 감사. – joshmax

1

당신은 문자 유형에 stf.PrimarySchoolID을 캐스팅 할 것입니다.

... 
CAST(stf.PrimarySchoolID AS VARCHAR(20)) -- You can fix length as needed 
... 
+0

그게 문제였습니다. 고맙습니다. 그리고 varchar 길이를 포함 해 주셔서 감사합니다. 그것에 대해 올려 정보 및 나는 그것에 대해 알게되었습니다. – joshmax

1

당신은 연결에서 사용하기 전에 문자 유형 (예를 들어, VARCHAR)에 stf.PrimarySchoolID 캐스팅해야합니다

SET NOCOUNT ON; 

SELECT '"'+ 
    stf.StaffNumber +'",'+ 
    convert(varchar, stf.PrimarySchoolID) +',"'+ 
    stf.LastName +'","'+ 
    stf.FirstName +'","' + 
    COALESCE(u.username, '')+'","'+ 
    COALESCE(sfc.[NAME],'') +'",'+ 
    stf.PrimarySchoolID 
FROM dbo.UDF_GetCurrentAcademicSessions() cur 
    JOIN dbo.Course c ON c.AcadSessionID = cur.AcadSessionId    
    JOIN dbo.Staff stf ON stf.StaffID = c.PrimaryTeacherID 
    JOIN dbo.StaffClassification sfc ON sfc.StaffClassificationID = stf.PrimaryClassificationID 
    LEFT OUTER JOIN dbo.[User] u ON u.UserID = stf.UserID 

당신은 SQL Server's CONVERT or SQL ANSI's CAST를 사용하여 유형 캐스트 ​​중 하나를 수행 할 수 있습니다.

+0

그건 문제였습니다. 감사합니다. 링크에 감사드립니다. – joshmax

-1

stf.PrimarySchoolID가 int이며 varchar() 필드에 연결하려고하므로이 오류가 발생합니다. 다음을 시도하십시오 :

SELECT '"'+ 
    stf.StaffNumber +'",'+ 
    cast(stf.PrimarySchoolID as varchar(10)) +',"'+ 
    stf.LastName +'","'+ 
    stf.FirstName +'","' + 
    COALESCE(u.username, '')+'","'+ 
    COALESCE(sfc.[NAME],'') +'",'+ 
    stf.PrimarySchoolID 
-1

조인 테이블 열이 주어진 열에 일치하거나 합쳐지지 않을 수 있습니다. 어떤 열을 두 번 확인하고, 논리가 합쳐 지도록 주어집니다.

관련 문제