2012-01-26 2 views
2

데이터베이스 테이블에있는 오류 메시지를 보고서의 사용자에게 익숙한 메시지로 변환하려고합니다.조건에 따라 데이터 집합의 필드에서 텍스트를 바꾸는 방법 - SQL Server

필드의 값을 다른 필드의 리터럴 텍스트를 기반으로 바꿀 수 있기를 원합니다. 파일 이름이 ExportFile 경우, 나는 There was an error with the export file을 읽을 수 FileContent를 원하는 파일 이름이 ImportFile 경우 내가 원하는 예를 들어

SELECT 
    Left(Filename,Len(Filename)-16) as 'FileName', 
    FileContent, 
    Right(left(Filename, Len(Filename) - 8), 8) as 'CurrentDate' 
FROM ErrorLogs 
WHERE 
    FileContent like '%Error%' 
    AND Right(left(Filename, Len(Filename) - 8), 8) = 
      Replace(convert(varchar(10), getdate(), 102), '.', '') 
ORDER BY 
    filename asc 

:

현재 쿼리는 세 개의 열 FileName, FileContent, CurrentDate와 데이터 집합을 반환 FileContent 그에 따라 읽을 수 있습니다.

임시 변수의

답변

1

임시 테이블이 필요하지 않습니다.

SELECT 
    Left(Filename,Len(Filename)-16) as 'FileName', 
    FileContent = CASE 
     WHEN Left(Filename,Len(Filename)-16) = 'ABC' THEN 'File is FUBAR' 
     WHEN Left(Filename,Len(Filename)-16) = 'XYZ' THEN 'File is hosed' 
     ELSE 'File is good!' 
    END, 
    Right(left(Filename, Len(Filename) - 8), 8) as 'CurrentDate' 
FROM ErrorLogs 
WHERE 
    FileContent like '%Error%' 
    AND Right(left(Filename, Len(Filename) - 8), 8) = 
      Replace(convert(varchar(10), getdate(), 102), '.', '') 
ORDER BY 
    filename asc 
0

사용은 UPDATE 문에 대한 필요가 조인 다시 데이터베이스에 갈 수 있다는 이유 때문이다 ... 당신의 응답에 미리 감사드립니다.

create table #temp 
(
FileName varchar(15), 
FileContent varchar(1000), 
CurrentDate varchar(50), 
) 
Insert into #temp 
SELECT Left(Filename,Len(Filename)-16) as 'FileName',FileContent , 
Right(left(Filename,Len(Filename)-8),8) as 'CurrentDate' 
FROM ErrorLogs 
WHERE FileContent like '%Error%' 
AND Right(left(Filename,Len(Filename)-8),8) = 
Replace(convert(varchar(10),getdate(),102),'.','') 
ORDER BY filename asc 

Update #temp 
Set FileContent = CASE 
    WHEN FileName = 'ExportFile' THEN 'There was an error with the export file' 
    WHEN FileName = 'ImportFile' THEN 'There was an error with the import file' 
    ELSE FileContent 
    END 
Select * from #temp 
Drop table #temp 
+0

감사합니다. 매우 도움이되었습니다. – user1171915

관련 문제