2011-01-03 22 views
0

하드 코딩 된 값을 손상시키면서 오류가 발생합니다. 대신 내가 임시 테이블을 사용하여 ... 간단한 SELECT 문을 작성해야이 경우 문실행 중 오류가 발생했습니다.

...

그래서 임시 테이블을 사용하여 코드를 작성했습니다
select case [BVG] 
    when 1 then 1 
    when 2 then 2 
    when 3 then 3 
end as Q0, 

SELECT CASE [AVG] 
    when 1 then 1 
    when 1.33 then 2 
    when 1.5 then 2 
    when 1.67 then 3 
    when 2 then 3 
    when 2.33 then 4 
End as Q 

FROM [MS].[BE].[Survey] 

.....

SELECT [Source], [Score] 

INTO #Temp_Table 

FROM [MS].[dbo].[S_Survey] 

WHERE [data_Source] = 'USA' 
대신에 나는이 select 문을 교체하고이 경우 문

....

SELECT q.[Score] as Q --- Getting error in this place.Data Type is varchar (100). 

FROM [MS].[BE].[Survey] s 

LEFT OUTER JOIN #Temp_Table q on 

s.[AVG] = q.[Source] 

그러나 나는 얻을입니다 메시지 8114, 수준 16, 상태 5, 줄 1 실행 .... 그리고 오류가

이다 팅 오류 동안 오류 변환하는 데이터 유형 VARCHAR가 떠 있습니다. 대신에 내가 쓸 수있는 q.[score] as Q 가까운 그 곳

.... 어떻게 내가 구문을 쓸 수 있습니다 ...

감사합니다, Sahsra

답변

2

당신의 평균으로 VARCHAR 수 없습니다.

내가 s.AVG은 float로 q.Source이 아니라고 추측하고있어이

SELECT [Source] , cast([Score] as decimal (10,2))--or whatever you need it to be 

INTO #Temp_Table 

FROM [MS].[dbo].[S_Survey] 

WHERE [data_Source] = 'USA' 
+0

[AVG]는 집계의 사용이 아닌 필드 이름이므로 "평균 varchars를 사용할 수 없습니다"라는 메시지가 여기에 적용됩니다. –

+0

답장을 보내 주셔서 감사합니다. 그러나 십진수를 넣으면 문제가 있습니다 .... 그 컬럼에 하나의 값 'NULL'이 있습니다. 십진수를 입력하면 'NULL'을 받아들이지 않을 것입니다 ... 그럼 이제 어떻게해야합니까 ... – Shahsra

+0

[AVG] 열은 그들이 취한 이름입니다 ... 그들은 아무 것도 집계하지 않습니다 .... – Shahsra

0

을보십시오. 이로 인해 SQL Server가 JOIN ON s.[AVG] = q.[Source]에서 암시 적 변환을 수행하고 사용자 값 중 하나가 문자가 아닙니다. 마지막으로이 문제가 발생하면 my answer 또는 Martin's을 다시 한 번 살펴 봐야합니다.

SELECT q.[Score] 
FROM [MS].[BE].[Survey] s 
WHERE like Score '%[^0-9.]%' 

UPDATE 네 개의 문자 값 'NULL'당신은 아마도 (테스트하지 않았습니다) 다음 할 수있는

SELECT q.[Score] as Q --- Getting error in this place.Data Type is varchar (100). 

FROM [MS].[BE].[Survey] s 

LEFT OUTER JOIN #Temp_Table q on 

s.[AVG] = q.[Source] 
and q.[Source] <> 'NULL' 

를 제거해야하거나 #에 삽입 할 수없는 경우 Temp_Table로 시작하십시오.

또는 JOIN을 시도하기 전에 해당 값을 삭제할 수 있습니다.

당연히 이것이 #temp_table에 숫자 형식을 사용하지 않는 이유라고 생각합니다.

+0

안녕하세요 주셔서 감사합니다하지만 내 사건에서 작동하지 않는 이미 시도했다 .... 일부 값을 'NULL'포함하고 있기 때문에 일부 1,2,3 및 일부 1.1,2.33,2.54이 같은 .. .. – Shahsra

+0

"<> 'NULL'"이 올바르게 보이지 않습니다. 실제 값이 'null'이 아닌 한 '잘못된 것이 아닙니다'인 경우 'IS NOT NULL'이어야합니다. – IamIC

+0

@IanC 그 나쁜 디자인 하나 따라서 내 설명 "네 문자 값 'NULL을 제거 해야하는 경우 –

관련 문제