2017-06-14 84 views
0

我在寫下面的SQL查詢來替換雙重空間。但它給錯誤。誰能幫忙?SQL替換函數不起作用

下面的代碼: -

Select * 
From (
    select nvcFormName,iEvalID,iFormID,dtCreationTime,dtEvaluatedStartTime, 
     fltGradScore,nvcFormattedName,iEvaluatorUserID, 
     iAgentUserID,flScore,iQuestionID,nvcQuestionAnswer 
    from dbo.vwEvaluationQuestions 
    inner join dbo.vwUser on iUserId = iAgentUserID where iFormID = 160 
) as s 
Pivot (min(nvcQuestionAnswer) for iQuestionID in ([23732], replace([23742],' ','')) as pvt 
where dtEvaluatedStartTime > '2017-04-01' and dtEvaluatedStartTime < '2017-04-30' 
order by dtEvaluatedStartTime asc 
+7

什麼錯誤? – Moudiz

+2

我認爲替換([23742],'','')是你問題的一部分。您試圖替換字符串[23742]中不包含任何空格的雙重空格。我認爲你需要用你想替換空格的列替換硬編碼值... –

+1

@Neil Hibbert我認爲[23742]是他的專欄名稱 – Nithin

回答

0

替換功能用於字符串的字符替換。使用此代替。單引號會做

REPLACE( '[23742]', '', '')

SELECT * 
FROM (
    SELECT nvcFormName 
     ,iEvalID 
     ,iFormID 
     ,dtCreationTime 
     ,dtEvaluatedStartTime 
     ,fltGradScore 
     ,nvcFormattedName 
     ,iEvaluatorUserID 
     ,iAgentUserID 
     ,flScore 
     ,iQuestionID 
     ,nvcQuestionAnswer 
    FROM dbo.vwEvaluationQuestions 
    INNER JOIN dbo.vwUser 
     ON iUserId = iAgentUserID 
    WHERE iFormID = 160 
    ) AS s 
Pivot(min(nvcQuestionAnswer) FOR iQuestionID IN (
      [23732] 
      ,replace('[23742]', ' ', '') 
      ) AS pvt WHERE dtEvaluatedStartTime > '2017-04-01' 
     AND dtEvaluatedStartTime < '2017-04-30' ORDER BY dtEvaluatedStartTime)