2017-04-18 59 views
0

我已經寫在SQL Server 2008以下聯合查詢選擇數字新列是查詢:使用聯合查詢

select cast(i.AMT_SETT as decimal(10,2)) as AMT_SETT 
from DIB_ERECON_INSIGHT_VISA i 

union 
select NULL as AMT_SETT from DIB_ERECON_TRAN_DETAILS d 
where d.channeltype = 'VISA' and cast(fieldno_1 as date) = '18-Apr-2017' and 
not exists(
       select 1 from DIB_ERECON_INSIGHT_VISA i 
       where i.STAN= d.fieldno_38 and replace(d.fieldno_39,':','') = i.TIME_LOC_TRAN and 
       cast(i.Amount as numeric(18,0)) = cast(d.fieldno_31 as numeric(18,0)) 
      ) 

我得到這個錯誤:

Error converting data type varchar to numeric. 

如果我嘗試'',而不是nullAMTT_SETT列第二查詢我得到同樣的錯誤

+0

做,如果你執行'UNION'的第一個查詢,你得到什麼結果呢? –

+1

您的第一條select語句出錯,其中一些值是字符串而不是數字 –

+0

您是否發現任何返回0且ISNUMERIC()使用的行? –

回答

1

ÿ您需要確保AMT_SETT,Amount和fieldno_31列中的所有值均爲數值。您可以使用函數ISNUMERIC(yourcolumn)來檢測存儲在列中的所有非數值。

+0

該列是數字我檢查 – user7543912

+0

它現在在sql數據庫中工作正常,但是當我將它導出到excel時,會自動修剪小數是否有任何方法來阻止它?是excel或數據的問題? – user7543912

+0

你是如何做出口業務的? –

1

您的第一個select語句出錯,其中一些值是字符串而不是數字,請查看數據並檢查哪一行具有非數值。

您可以輕鬆地獲得該行如下:

SELECT * FROM TABLE WHERE ISNUMERIC(ColumnName)=0