Преобразовать nvarchar в число c в SQL Запрос к серверу? - PullRequest
0 голосов
/ 25 января 2020

У меня проблема со столбцом b.strpay88Amt. Столбец b.strpay88Amt имеет тип данных nvarchar. Эта ошибка

Сообщение 8117, уровень 16, состояние 1, строка 2
Тип данных операнда nvarchar недопустим для оператора сумм.

Пожалуйста, помогите мне решить эту проблему.

select distinct 
    b.strCostCentreID, b.strPOSOnlineRefNo, strPayTypeCode, 
    tblMachine.strDesc as KioskName, 
    (SUM(b.dblPaidAmt)) as RM, (SUM(b.strIpay88Amt)) as pay88AmtRM,
    (SUM(b.dblPaidAmt)) - (SUM(b.strIpay88Amt)) RMVariance, 
    (select STUFF((select  ','  + strProdType 
                   from tblCurrTrx as a  
                   where a.strPOSOnlineRefNo = b.strPOSOnlineRefNo 
                   for xml path('')), 1, 1, '')) as Agency   
from 
    tblCurrTrx as b 
inner join 
    tblMachine on b.strMachID = tblMachine.strMachID 
where
    strPaymentMethod = '2' 
    and (dtmTrans >= '1/21/2020')  
    and (strTransStatus = '01')
group by
    b.strCostCentreID, b.strPOSOnlineRefNo, b.strPayTypeCode, tblMachine.strDesc

1 Ответ

0 голосов
/ 25 января 2020

Вам необходимо использовать функции CAST и CONVERT. Эти функции преобразуют выражение одного типа данных в другой. Ваш код будет выглядеть примерно так. Ниже я приведу более близкий пример.

SELECT b.strpay88Amt AS c_name , CONVERT(DECIMAL(18,2),b.strpay88Amt) AS b.strpay88Amt
  From tblCurrTrx
   as b 
  where something

Однако значение столбца не всегда может быть цифрой c. Так что лучше сначала проверить это. Вы также можете использовать CAST. Полная документация доступна, вы можете проверить их. https://docs.microsoft.com/en-us/sql/t-sql/functions/cast-and-convert-transact-sql?view=sql-server-ver15

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...