Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

redondeo de numeros SQL

30 views
Skip to first unread message

Pedro

unread,
Sep 19, 2007, 8:20:01 AM9/19/07
to

SQL server 2005
tengo una tabla temporal cuyo nombre de la tabla lo cargo en una variable:
@NombreTablaTemporal

la voy a exportar a txt.
Cargo las cabeceras de las columnas en el primer registro para mostrarlas en
el fichero.
Y convierto los distintos tipos de colunas a nvarchar ya que exporto a
texto, y poder controlar
los puntos de las columnas tipo money y sustituirlo por comas y mas cosas....
En fin voy a mostrar como lo hago, lo entenderéis mejor y luego os pregunto
el problema que tengo:


-- Construimos las dos listas
-- 1. nombres de columnas
-- 2. columnas convertidas a nvarchar
SELECT @columnNames = COALESCE( @columnNames + ',', '') + column_name,
@columnConvert = COALESCE( @columnConvert + ',', '') +
case
when data_type in ('datetime', 'smalldatetime') then
'convert(nvarchar(4000),'+ column_name +',121'+') as '
when data_type in ('numeric', 'decimal') then
'replace(convert(nvarchar(4000),'+ column_name +',128'+ '), ''.'', '','') as '
when data_type in ('float', 'real', 'money', 'smallmoney') then
'replace(convert(nvarchar(4000),'+ column_name +',0'+ '), ''.'', '','') as '
--when data_type in ('datetime', 'smalldatetime') then ',120'
else 'convert(nvarchar(4000),'+ column_name +''+') as '
end + column_name
FROM tempdb.INFORMATION_SCHEMA.Columns
WHERE table_name = ''+@NombreTablaTemporal+''


-- Ejecutamos la query para insertar los datos y los nombres de las columnas
en la nueva tabla temp
SELECT @v_execselect = 'select ' +cast (@columnNames as varchar(max))+ '
into '+cast (@NombreTablaTemporal as varchar(max))+'2
from (select ' +cast (@columnConvert as varchar(max))+ ', ''2'' as
[temp##SortID] from
'+cast (@NombreTablaTemporal as varchar(max))+' union all select ''' +
replace(cast (@columnNames as varchar(max)), ',', ''',
''') + ''', ''1'') t order by [temp##SortID]'


exec (@v_execselect)

-- Constuimos la query con el BCP
Select @v_execselect2 = N'bcp.exe "Select * from '+ @NombreTablaTemporal +
N'2 Modern_Spanish_CI_AI" queryout "'+@v_ruta+'\'+@v_fichero+'.xls'+N'"'+' -C
RAW -c -T -SMADCELTEST'

-- Ejecutamos BCP
EXEC master..xp_cmdshell @v_execselect2, NO_OUTPUT


el problema es:
Cuando tengo campos de tipo money o numercos en SQL tal que asi: 2238200.00
En algun momento de la exportacion me los redondea de la forma: 2,24E+06 en
vez de sacarlo asi: 2238200,00

otro ejemplo, tal que asi: 4056300.00 redondea de la forma: 4,06E+06 en vez
de sacarlo asi: 4056300,00
solo quiero sustituir el . por la ,
conserverar los decimales.....


Disculpar si no me explico mejor...


Alejandro Mesa

unread,
Sep 19, 2007, 9:50:02 AM9/19/07
to
Pedro,

Ve si esto te es de ayuda.

select
replace(ltrim(str(c1, 10, 2)), '.', ',')
from
(
select cast(4056300.00 as money) as c1
) as t
go

AMB

0 new messages