Как поместить имя столбца в тип данных sqlsever CAST? - PullRequest
1 голос
/ 06 августа 2010

Сегодня я начал писать запрос, как указано ниже:


SELECT IP1.InstId,CAST(IP2.Quote AS DECIMAL(10,2)) AS 'CurrentPrice',IP1.Quote,(IP2.Quote-IP1.Quote) AS 'Change' 
FROM InstrumentPrices IP1
INNER JOIN InstrumentPrices IP2
ON IP1.InstId=IP2.InstId
INNER JOIN Instruments I
ON I.Id=IP2.InstId
INNER JOIN Games G
ON G.Id=IP1.GameId
AND G.CurrentPeriod-2=IP1.Period
AND G.CurrentPeriod-1=IP2.Period

Приведенный выше запрос вернул меня с ожидаемыми результатами. Затем я изменил вывод столбца IP2.Quote таким образом, чтобы он возвращал десятичные точки на основе другого столбца NDP в таблице инструментов. Измененный запрос, как указано ниже:


SELECT IP1.InstId,CAST(IP2.Quote AS DECIMAL(10,I.NDP)) AS 'CurrentPrice',IP1.Quote,(IP2.Quote-IP1.Quote) AS 'Change' 
FROM InstrumentPrices IP1
INNER JOIN InstrumentPrices IP2
ON IP1.InstId=IP2.InstId
INNER JOIN Instruments I
ON I.Id=IP2.InstId
INNER JOIN Games G
ON G.Id=IP1.GameId
AND G.CurrentPeriod-2=IP1.Period
AND G.CurrentPeriod-1=IP2.Period

Второй запрос вернул синтаксическое возвращение, как указано ниже:


Msg 102, Level 15, State 1, Line 1
Incorrect syntax near 'I'.

Понятия не имею об ошибке, возвращаемой SQLServer.

Пожалуйста, помогите !!!

Спасибо, Махеш

1 Ответ

1 голос
/ 06 августа 2010

Похоже, вы пытаетесь указать масштаб десятичной дроби в приведении на основе значения из столбца, вы просто не можете этого сделать, это не допустимый TSQL.

...