2016-08-20 2 views
0

У меня есть этот код кода с ошибкой, потому что я использую переменную Int внутри Nvarchar.SQL Server 2005: помощь для конкатенации Nvarchar и Int

DECLARE @FattAnnoCorrente INT; 
DECLARE @Tabscontianno1 NVARCHAR(MAX); 

SET @Tabscontianno1 = 
N'<p align="left"><b>ANNO ' + @Anno1 + ' - </b><b>' + @FattAnnoCorrente + '<br> 
    </b></p> 
<table height="62" border="1" cellpadding="2" cellspacing="2" 
    width="501"> 
    <tbody> 
    <tr> 
     <td valign="top">FATTURATO<br> 
     </td> 
     <td valign="top">SCONTO<br> 
     </td> 
    </tr>' + CAST ((
        SELECT 
        td = SUM(TOTNETTORIGA), '', 
        td = SCONTIESTESI 
        FROM .dbo.TESTEDOCUMENTI 
        INNER JOIN .dbo.RIGHEDOCUMENTI 
        ON PROGRESSIVO=IDTESTA AND TOTNETTORIGA <>'0' 
        WHERE CODCLIFOR = @CodiceCliente AND .dbo.TESTEDOCUMENTI.DOCCHIUSO = '0' AND .dbo.TESTEDOCUMENTI.BLOCCATO = '0' AND .dbo.TESTEDOCUMENTI.TIPODOC = 'FVC' AND .dbo.TESTEDOCUMENTI.ESERCIZIO = YEAR(GETDATE()) 
        GROUP BY TESTEDOCUMENTI.ESERCIZIO,SCONTIESTESI 
    FOR XML PATH('tr'), TYPE) 
    AS NVARCHAR(MAX)) + 
    N' </tbody> 
</table>'+ 
    N'<BR/>' ; 

Я получаю эту ошибку:

Conversion failed when converting the nvarchar value 'ANNO 2016 -' to data type int.

Если я использую

CAST(CAST(COALESCE(@FattAnnoCorrente) as int) as varchar(255)) 

я вместо того, чтобы получить эти ошибки:

Msg 102, Level 15, State 1, Line 154
Incorrect syntax near ')'.
Msg 156, Level 15, State 1, Line 173
Incorrect syntax near the keyword 'FOR'.

Можете ли вы помочь мне решить эту проблему ,

После вставки его в переменной nvarchar мне нужно отформатировать его как деньги так:

'€ ' + REPLACE(CONVERT(varchar, CAST(@FattAnnoCorrente AS money), 105),',','.') 

Спасибо, ребята!

ответ

1

Вам нужно будет бросить все INT типы в VARCHAR ..

в вашем случае, если вы первый кастинг их INT ..

изменение ниже заявление

CAST(CAST(COALESCE(@FattAnnoCorrente) as int) as varchar(255)) 

в

cast(COALESCE(@FattAnnoCorrente,'somevalue') as varchar(255)) 
+0

Некоторые значения, как? – BigBlack

+0

@BigBlack: Некоторое значение, не равное нулю для объединения – TheGameiswar

Смежные вопросы