Consejos para SSIS

Para ver explicación de cómo importar archivos texto a una tabla en SQL server mediante un SSIS

https://www.youtube.com/watch?v=sqFwTYyy5S0

 

 

Para ver video de cómo exportar varias tablas de sql a varios archivos texto mediante un SSIS

https://www.youtube.com/watch?v=QOzH2Hq2qPY

 

 

Para ver video de cómo exportar una tabla de SQL a varios archivos de texto delimitado mediante un SSIS

https://www.youtube.com/watch?v=rCoRM2Zc09E

Posted in Uncategorized | Leave a comment

Tratamiento a periodo

Cuando tienes un periodo puedes hacer este tratamiento para obtener los diferentes tipos de fechas, ménsula, trimestral etc..

PeriodoTra

DECLARE @PER DECIMAL(10,0)

SET @PER = ‘2010010000’

SELECT CASE
WHEN LEN(REVERSE(CAST(REVERSE(MIN(@PER)) AS BIGINT))) = 6 THEN CAST( REVERSE(CAST(REVERSE(MIN(@PER)) AS BIGINT))* 10 AS VARCHAR)
WHEN LEN(REVERSE(CAST(REVERSE(MIN(@PER)) AS BIGINT))) = 3 THEN CAST( REVERSE(CAST(REVERSE(MIN(@PER)) AS BIGINT))* 10 AS VARCHAR)
WHEN LEN(REVERSE(CAST(REVERSE(MIN(@PER)) AS BIGINT))) = 1 THEN CAST( REVERSE(CAST(REVERSE(MIN(@PER)) AS BIGINT))* 1000 AS VARCHAR)
ELSE CAST( REVERSE(CAST(REVERSE(MIN(@PER)) AS BIGINT)) AS VARCHAR) end + ‘ – ‘+
CASE
WHEN LEN(REVERSE(CAST(REVERSE(MAX(@PER)) AS BIGINT))) = 6 THEN CAST( REVERSE(CAST(REVERSE(MAX(@PER)) AS BIGINT))* 10 AS VARCHAR)
WHEN LEN(REVERSE(CAST(REVERSE(MAX(@PER)) AS BIGINT))) = 3 THEN CAST( REVERSE(CAST(REVERSE(MAX(@PER)) AS BIGINT))* 10 AS VARCHAR)
WHEN LEN(REVERSE(CAST(REVERSE(MAX(@PER)) AS BIGINT))) = 1 THEN CAST( REVERSE(CAST(REVERSE(MAX(@PER)) AS BIGINT))* 1000 AS VARCHAR)
ELSE CAST( REVERSE(CAST(REVERSE(MAX(@PER)) AS BIGINT)) AS VARCHAR) end

Posted in Uncategorized | Leave a comment

Rellena ceros

Función de tipo escalar, con esta función podrás rellenar ceros a la derecha

Ceros

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER FUNCTION [dbo].[F_RellenaCeros] (@variable int, @longitud int)
RETURNS VARCHAR(10) AS
BEGIN
DECLARE @RESULTADO VARCHAR(10)
SET @RESULTADO=REPLICATE(‘0’,@LONGITUD – LEN(@VARIABLE))+CAST(@VARIABLE AS VARCHAR)
return (@Resultado)
END

 

Posted in Uncategorized | Leave a comment

La mejor Funcion (tabla) SQL server

Función de tipo tabla para convertir filas  de datos separadas por comas a tablas

Split

/****** Object: UserDefinedFunction .[F_Split] Script Date: 09/01/2016 08:37:05 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [DBO].[F_Split](@Cadena VARCHAR(max), — Especifica una cadena así 01,02,03,04
@Delimitador VARCHAR(1) = ‘,’) — Especifica el delimitador que utiliza la @Cadena (,)
RETURNS @Lista TABLE (id int identity primary key,elemento VARCHAR(100) )
BEGIN
DECLARE @tempElemento VARCHAR(max)
WHILE CHARINDEX(@Delimitador,@Cadena,0) <> 0
BEGIN
SELECT @tempElemento = RTRIM(LTRIM(SUBSTRING(@Cadena,1,CHARINDEX(@Delimitador,@Cadena,0)-1))), @Cadena=RTRIM(LTRIM(SUBSTRING(@Cadena,CHARINDEX(@Delimitador,@Cadena,0)+LEN(@Delimitador),LEN(@Cadena))))
IF LEN(@tempElemento) > 0 –and charindex(‘_’,@tempElemento) = 0
INSERT INTO @Lista SELECT @tempElemento
END
IF LEN(@Cadena) > 0
INSERT INTO @Lista SELECT @Cadena — Put the last item in
RETURN
END

 

Posted in Uncategorized | Leave a comment

Exclusive access could not be obtained because the database is in use.

error

solicion

Posted in Uncategorized | Leave a comment

DECIMALES: Agrega decimales

Agrega los decimales a un numero SQL server

ALTER FUNCTION [dbo].[fn_NumDec]
(@Numero numeric(20,6),
@ND int)
RETURNS varchar(50)
WITH EXECUTE AS CALLER
AS
BEGIN
DECLARE @NumDec VARCHAR(50)
SELECT @NumDec = RTRIM(SUBSTRING(CONVERT(CHAR(20),ROUND(@Numero, @ND)), 1, CHARINDEX(‘.’, ROUND(@Numero, @ND)) + @ND))
RETURN(@NumDec)
END

Posted in Uncategorized | Leave a comment

Numeros a letras

convertir numeros a letras en sql server

 

ALTER function [dbo].[fn_Num_A_Letras]
(@Numero numeric(28,2))
RETURNS Varchar(500)
WITH EXECUTE AS CALLER
AS
BEGIN
DECLARE @lnEntero BIGINT,
@lcRetorno VARCHAR(512),
@lnTerna INT,
@lcMiles VARCHAR(512),
@lcCadena VARCHAR(512),
@lnUnidades INT,
@lnDecenas INT,
@lnCentenas INT,
@lnFraccion INT,
@Num2Letras VARCHAR(1000),
@NombreMoneda VARCHAR(30),
@Abreviacion VARCHAR(10),
@Simbolo VARCHAR(5),
@Fraccion VARCHAR(25)

SELECT @lnEntero = CAST(@Numero AS BIGINT),
@lnFraccion = (@Numero – @lnEntero) * 100,
@lcRetorno = ”,
@lnTerna = 1

SELECT @NombreMoneda = Nombre, @Abreviacion = Abreviacion, @Simbolo = Simbolo, @Fraccion = Fraccion
FROM MonedaPropuesta
WHERE Indice = 0

WHILE @lnEntero > 0
BEGIN /* WHILE */
— Recorro columna por columna
SELECT @lcCadena = ”
SELECT @lnUnidades = @lnEntero % 10
SELECT @lnEntero = CAST(@lnEntero/10 AS BIGINT)
SELECT @lnDecenas = @lnEntero % 10
SELECT @lnEntero = CAST(@lnEntero/10 AS BIGINT)
SELECT @lnCentenas = @lnEntero % 10
SELECT @lnEntero = CAST(@lnEntero/10 AS BIGINT)

— Analizo las unidades
SELECT @lcCadena =
CASE /* UNIDADES */
WHEN @lnUnidades = 1 THEN ‘UN ‘ + @lcCadena
WHEN @lnUnidades = 2 THEN ‘DOS ‘ + @lcCadena
WHEN @lnUnidades = 3 THEN ‘TRES ‘ + @lcCadena
WHEN @lnUnidades = 4 THEN ‘CUATRO ‘ + @lcCadena
WHEN @lnUnidades = 5 THEN ‘CINCO ‘ + @lcCadena
WHEN @lnUnidades = 6 THEN ‘SEIS ‘ + @lcCadena
WHEN @lnUnidades = 7 THEN ‘SIETE ‘ + @lcCadena
WHEN @lnUnidades = 8 THEN ‘OCHO ‘ + @lcCadena
WHEN @lnUnidades = 9 THEN ‘NUEVE ‘ + @lcCadena
ELSE @lcCadena
END /* UNIDADES */

— Analizo las decenas
SELECT @lcCadena =
CASE /* DECENAS */
WHEN @lnDecenas = 1 THEN
CASE @lnUnidades
WHEN 0 THEN ‘DIEZ ‘
WHEN 1 THEN ‘ONCE ‘
WHEN 2 THEN ‘DOCE ‘
WHEN 3 THEN ‘TRECE ‘
WHEN 4 THEN ‘CATORCE ‘
WHEN 5 THEN ‘QUINCE ‘
ELSE ‘DIECI’ + @lcCadena
END
WHEN @lnDecenas = 2 AND @lnUnidades = 0 THEN ‘VEINTE ‘ + @lcCadena
WHEN @lnDecenas = 2 AND @lnUnidades <> 0 THEN ‘VEINTI’ + @lcCadena
WHEN @lnDecenas = 3 AND @lnUnidades = 0 THEN ‘TREINTA ‘ + @lcCadena
WHEN @lnDecenas = 3 AND @lnUnidades <> 0 THEN ‘TREINTA Y ‘ + @lcCadena
WHEN @lnDecenas = 4 AND @lnUnidades = 0 THEN ‘CUARENTA ‘ + @lcCadena
WHEN @lnDecenas = 4 AND @lnUnidades <> 0 THEN ‘CUARENTA Y ‘ + @lcCadena
WHEN @lnDecenas = 5 AND @lnUnidades = 0 THEN ‘CINCUENTA ‘ + @lcCadena
WHEN @lnDecenas = 5 AND @lnUnidades <> 0 THEN ‘CINCUENTA Y ‘ + @lcCadena
WHEN @lnDecenas = 6 AND @lnUnidades = 0 THEN ‘SESENTA ‘ + @lcCadena
WHEN @lnDecenas = 6 AND @lnUnidades <> 0 THEN ‘SESENTA Y ‘ + @lcCadena
WHEN @lnDecenas = 7 AND @lnUnidades = 0 THEN ‘SETENTA ‘ + @lcCadena
WHEN @lnDecenas = 7 AND @lnUnidades <> 0 THEN ‘SETENTA Y ‘ + @lcCadena
WHEN @lnDecenas = 8 AND @lnUnidades = 0 THEN ‘OCHENTA ‘ + @lcCadena
WHEN @lnDecenas = 8 AND @lnUnidades <> 0 THEN ‘OCHENTA Y ‘ + @lcCadena
WHEN @lnDecenas = 9 AND @lnUnidades = 0 THEN ‘NOVENTA ‘ + @lcCadena
WHEN @lnDecenas = 9 AND @lnUnidades <> 0 THEN ‘NOVENTA Y ‘ + @lcCadena
ELSE @lcCadena
END /* DECENAS */

— Analizo las centenas
SELECT @lcCadena =
CASE /* CENTENAS */
WHEN @lnCentenas = 1 AND @lnUnidades = 0 AND @lnDecenas = 0 THEN ‘CIEN ‘ + @lcCadena
WHEN @lnCentenas = 1 AND NOT(@lnUnidades = 0 AND @lnDecenas = 0) THEN ‘CIENTO ‘ + @lcCadena
WHEN @lnCentenas = 2 THEN ‘DOSCIENTOS ‘ + @lcCadena
WHEN @lnCentenas = 3 THEN ‘TRESCIENTOS ‘ + @lcCadena
WHEN @lnCentenas = 4 THEN ‘CUATROCIENTOS ‘ + @lcCadena
WHEN @lnCentenas = 5 THEN ‘QUINIENTOS ‘ + @lcCadena
WHEN @lnCentenas = 6 THEN ‘SEISCIENTOS ‘ + @lcCadena
WHEN @lnCentenas = 7 THEN ‘SETECIENTOS ‘ + @lcCadena
WHEN @lnCentenas = 8 THEN ‘OCHOCIENTOS ‘ + @lcCadena
WHEN @lnCentenas = 9 THEN ‘NOVECIENTOS ‘ + @lcCadena
ELSE @lcCadena
END /* CENTENAS */

— Analizo los millares
SELECT @lcCadena =
CASE /* TERNA */
WHEN @lnTerna = 1 THEN @lcCadena
WHEN @lnTerna = 2 AND (@lnUnidades + @lnDecenas + @lnCentenas <> 0) THEN @lcCadena + ‘ MIL ‘
WHEN @lnTerna = 3 AND (@lnUnidades + @lnDecenas + @lnCentenas <> 0) AND
@lnUnidades = 1 AND @lnDecenas = 0 AND @lnCentenas = 0 THEN @lcCadena + ‘ MILLON ‘
WHEN @lnTerna = 3 AND NOT (@lnUnidades = 1 AND @lnDecenas = 0 AND @lnCentenas = 0) THEN @lcCadena + ‘ MILLONES ‘
WHEN @lnTerna = 4 AND @lnUnidades = 1 AND @lnDecenas = 0 AND @lnCentenas = 0 THEN @lcCadena + ‘ MIL ‘
WHEN @lnTerna = 4 AND NOT (@lnUnidades = 1 AND @lnDecenas = 0 AND @lnCentenas = 0) THEN @lcCadena + ‘ MIL ‘
WHEN @lnTerna = 5 AND NOT (@lnUnidades = 1 AND @lnDecenas = 0 AND @lnCentenas = 0) THEN @lcCadena + ‘ BILLONES ‘
ELSE ”
END /* MILLARES */

— Armo el retorno columna a columna
SELECT @lcRetorno = @lcCadena + @lcRetorno
SELECT @lnTerna = @lnTerna + 1

END /* WHILE */

IF @lnTerna = 1
SELECT @lcRetorno = ‘CERO’

SELECT @Num2Letras = RTRIM(@lcRetorno) + ‘ ‘ + @NombreMoneda + ‘ ‘ + CASE WHEN LEN(LTRIM(STR(@lnFraccion,2))) = 1 THEN ‘0’ + LTRIM(STR(@lnFraccion,2))
ELSE LTRIM(STR(@lnFraccion,2)) END + @Fraccion + ‘ ‘ + @Abreviacion

RETURN(@Num2Letras)
END

Posted in Uncategorized | Leave a comment