2017-06-14 86 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)