네트워크 인벤토리 시스템 LanSweeper에서 보고서 쿼리를 작성합니다. 내가 이루고자하는 것을 보여주기위한 최소한의 예입니다.정수가 아닌 값에서 CASE 사용
Select Distinct Top 1000000 tblAssets.AssetName,
(Select Case When tblRegistry.Value = 2 Then 'Notify Only'
When tblRegistry.Value = 3 Then 'Download Notify'
When tblRegistry.Value = 4 Then 'Scheduled'
When tblRegistry.Value = 5 Then 'Download and Custom'
Else tblRegistry.Value End As RegistryValue
From tblAssets As TA Left Join tblRegistry On tblRegistry.AssetID = TA.AssetID
Where tblRegistry.Valuename = 'AUoptions' And TA.AssetID = tblAssets.AssetID)
As AUOption
From tblAssets
문제는 해당 테이블 tblRegistry
나는 재고에 내 시스템을 말한 레지스트리 키와 값의 모음입니다. 다른 보고서에 대한 여러 개의 키를 재고 할 때마다 해당 테이블에 문자열과 정수가 혼합되어 있습니다. 나는 테이블에서 원하는 값을 끌어 당기는 데 문제가 없다. 내 문제는 숫자 값에 친숙한 문자열을 제공하는 데서 발생합니다. 위의 경우 Windows 컴퓨터의 자동 업데이트 설정입니다.
내가 갖는 오류 : 그것은 분명히 정수되지 않기 때문에
이Conversion failed when converting the nvarchar value 'C62E10' to data type int
이 의미가 있습니다. 모든 tblRegistry.Value
년대 대신 WHERE
clase Where tblRegistry.Valuename = 'AUoptions'
CASE
문에서 숫자가 아닌 값을 필터링 할 수있는 방법이 있나요 될 필터링되었을 사람들의 CASE
에 의해 평가되고있는 것으로 보인다?
'case ... when'에서 varchar를 사용하는 것이 어떻습니까? 'Case when tblRegistry.Value = '2'Then ... ' – B0Andrew
'CAST (tblRegistry.Value AS INT) = 2'의 경우는 무엇입니까? – Icemanind
'tblRegistry.Value'의 기본 데이터 유형은 무엇입니까? – Magnus