2015-01-05 220 views
-1

我已經使用SSIS將excel數據加載到表中。將數據轉換爲數字轉換

表結構:

Monthly_Budget 

SEQUENCE   INT IDENTITY, 
TRANSACTION_DATE VARCHAR(100), 
TRANSACTION_REMARKS VARCHAR(1000), 
WITHDRAWL_AMOUNT VARCHAR(100), 
DEPOSIT_AMOUNT  VARCHAR(100), 
BALANCE_AMOUNT  VARCHAR(100) 

價值觀WITHDRAWL_AMOUNT柱:

7,987.00 
1,500.00 
7,000.00 
50.00 
NULL 
253.00 
4,700.00 
2,000.00 
148.00 
2,000.00 
64.00 
1,081.00 
2,000.00 
NULL 
NULL 
7,000.00 

現在,我想運行一個查詢來獲取下WITHDRWAL_AMOUNT值的總和,但我得到一個錯誤:

Error converting data type varchar to numeric. 

我的查詢:

SELECT SUM(CAST(ISNULL(LTRIM(RTRIM(WITHDRAWL_AMOUNT)),0) AS NUMERIC(6,2))) AS NUM FROM MONTHLY_BUDGET 
+0

你的問題源於糟糕的數據庫設計:所有這些字段不應該是varchar。使用適當的數據類型ffs! –

+0

我正在使用這些字段作爲varchar,以便我可以正確地將數據從excel加載到表(數據轉換,data_type(DT_STR))。我也嘗試在更改表結構後使用DT_NUMERIC,但它不起作用。 – Praveenks

+2

使用適當的數據類型。期。 –

回答

1

嘗試將它們轉換是這樣的:

select SUM(CAST(ltrim(rtrim(replace(WITHDRAWL_AMOUNT, ',', ''))) as numeric(6, 2))) 

這是非常非常理想的值存儲在您需要的正確的類型。但是,我可以理解,將外部數據放入暫存表中,然後使用上述邏輯將數據加載到最終表中。