Ooberrybooberry
Ooberrybooberry

Reputation: 1

SSMS 2008 Conversion failed when converting the varchar value '2.126' to data type int

I'm new to SQL and I'm using SQL Server 2008 Management Studio. The below code isn't working due to a decimal being converted to an INT. From similar issues I can see that I need to use CONVERT, but unsure how to use this in my code?

DROP TABLE [DBO].[STEP9_OUTPUT]
GO

SELECT      
    S8.*,
    CAST(CASE
            WHEN S8.ERROR_TRANSACTION = 'N'
               THEN NOERROR_VALUE
            WHEN S8.SOURCE_SYSTEM_IND = 'P'
               THEN P_VALUE
            ELSE A_VALUE
         END AS FLOAT) AS CORRECTED_PRICE
INTO STEP9_OUTPUT
FROM
    (SELECT      
         S8.*,
         CASE
            WHEN S8.SOURCE_SYSTEM_IND = 'P' AND DIVRATE = 'Y'
               THEN P_VALUE_DIV
            WHEN S8.SOURCE_SYSTEM_IND = 'P' AND DIVRATE = 'N'
               THEN P_VALUE_MULT
            ELSE NULL
         END AS P_VALUE
     FROM
         (SELECT      
              S8.*,
              CASE
                  WHEN S8.SOURCE_SYSTEM_IND = 'P' AND 
                       S8.ERROR_TRANSACTION = 'Y' AND 
                       DIVRATE = 'N' AND S8.FN > 0
                     THEN S8.FN
                  WHEN S8.UNITS_INFUND_FOR_TRADE > 0 
                     THEN S8.FTP
                  WHEN S8.FJFG = 'N' AND S8.RATE IS NULL
                     THEN S8.FB / 100 * 1
                  WHEN S8.FJFG = 'N' AND S8.RATE IS NOT NULL
                     THEN S8.FB / 100 * S8.RATE
                  WHEN S8.FJFG <> 'N' AND S8.RATE IS NULL
                     THEN 1 * 1
                  WHEN S8.FJFG <> 'N' AND S8.RATE IS NOT NULL
                     THEN 1 * S8.RATE
                  ELSE NULL
               END AS P_VALUE_MULT,
               CASE
                  WHEN S8.SOURCE_SYSTEM_IND = 'P' AND 
                       S8.ERROR_TRANSACTION = 'Y' AND 
                       [DIVRATE] = 'Y' AND S8.FN > 0
                     THEN S8.FN
                  WHEN S8.UNITS_INFUND_FOR_TRADE > 0
                     THEN S8.FTP
                  WHEN S8.FJFG = 'N' AND S8.RATE IS NULL
                     THEN S8.FB / 100
                  WHEN S8.FJFG = 'N' AND S8.RATE IS NOT NULL
                     THEN S8.FB / (100 / S8.RATE)
                  ELSE NULL
               END AS P_VALUE_DIV
           FROM
               (SELECT      
                    S8.*,
                    CASE
                        WHEN S8.ERROR_TRANSACTION = 'N'
                           THEN FUND_UNIT_PRICE_FOR_TRADE
                        ELSE NULL
                    END AS NOERROR_VALUE,
                    CASE
                       WHEN S8.SOURCE_SYSTEM_IND = 'A' AND
                            S8.ERROR_TRANSACTION = 'Y' AND 
                            S8.ASSET_CODE = 'XX'
                          THEN S8.FUND_BID_VALUE
                       ELSE NULL
                    END AS A_VALUE,
                    CASE
                       WHEN S8.FACURR = 'SEK' OR S8.FACURR = 'JPY'
                          THEN 'Y'
                       ELSE 'N'
                    END AS DIVRATE
                FROM 
                    STEP8_OUTPUT S8) S8
      ) S8
) S8

Upvotes: 0

Views: 44

Answers (1)

Athit Upakan
Athit Upakan

Reputation: 123

SELECT CAST(CAST('2.126' as decimal) as int)

Upvotes: 1

Related Questions