2012-01-26 3 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 

現在のクエリは、3つの列FileNameFileContentCurrentDateとのデータセットを返します。それに応じてFileContentを読んでください。

は一時変数の使用が参加するために再び戻ってデータベースに移動するには、UPDATE文の必要がないという理由によるものである...あなたの応答を事前に

答えて

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

、ありがとうございました。

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

関連する問題