martes, 3 de mayo de 2016

CODE SNIPPET - Layout - Template


El siguiente script es un ejemplo de una plantilla para *.snippet:







UNA VEZ QUE SE TIENE LA PLANTILLA (EL CÓDIGO A INSERTAR ES LO GRIS)
SE GUARDA EL ARCHIVO COMO .SNIPPET Y SE SUBE ASÍ...


















































EJEMPLO 






<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<Title>Encabezado</Title>
<Description> Encabezado </Description>
<Author> Manuel Omar Olguín Hernández </Author>
<SnippetTypes>
<SnippetType>Expansion</SnippetType>
</SnippetTypes>
</Header>
<Snippet>
<Declarations>
<Literal>
<ID>Encabezado</ID>
<ToolTip>Convenciones</ToolTip>
<Default>Convenciones</Default>
</Literal>
</Declarations>
<Code Language="SQL">

<![CDATA[

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- ===============================================================================
-- Autor:                 NOMBRE DEL AUTOR
-- Fecha:                 YYYY / MM / DD
-- Versión:                1.0
-- Requerimiento:  
-- Descripcion:           
-- ==============================================================================

]]>
</Code>
</Snippet>
</CodeSnippet>

</CodeSnippets>























lunes, 2 de mayo de 2016

UNPIVOT - Columnas a Filas


El siguiente script ayuda a pasar información que está en columnas en filas, respetando el nombre de la columna y su valor, para ello se deben convertir todos los valores de las n columnas en un solo tipo de dato para que la función UNPIVOT funcione correctamente.


se crea la tabla como variable:

DECLARE @T1 AS TABLE (ID   INT, NAME VARCHAR(30), FECHA  DATE, OTRA VARCHAR(MAX))
INSERT INTO @T1
SELECT 1, 'OMAR', GETDATE(), 'xxxxxxxxxxx' UNION ALL
SELECT 2, 'MANUEL', '2016-05-05', '*************';



select * from @T1;

el resultado es el siguiente:









Ahora lo que se quiere es pasar esos registros con las columnas en filas.
así:













para lograrlo se ejecuta la función UNPIVOT Asi:



WITH TABLA AS
    (
        -- Common table Expression para convertir todos los datos en un solo tipo
        SELECT
                     ID
                    ,NAME =  CONVERT(VARCHAR(MAX), Name)
                    ,FECHA = CONVERT(VARCHAR(MAX), FECHA)
                    ,OTRA  = CONVERT(VARCHAR(MAX), OTRA)
        FROM @T1
       )

SELECT
              ID
             ,columna
             ,valor
FROM TABLA
unpivot
       (
           valor for columna in ([name],[fecha],[otra])
          ) as unpvt


esto fue un ejemplo simple.