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...
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