Mostrando entradas con la etiqueta SQL Funciones. Mostrar todas las entradas
Mostrando entradas con la etiqueta SQL Funciones. Mostrar todas las entradas

viernes, 28 de noviembre de 2014

Convertir líneas a columna en una consulta sql

Se puede pasar un resultado de una consulta sql de líneas a un varchar que representaría una columna con la función: COALESCE siempre que no contenga ningún null el resultado de la consulta.

Ejemplo:
DECLARE @valores VARCHAR(1000)
SELECT @valores= COALESCE(@valores + ',', '') + valor FROM MiConsulta-Tabla

Valor es uno de los campos de MiConsulta-Tabla.
El resultado es un varchar concatenado por comas.
Tenemos la limitación de la longitud del varchar (Aunque lo definamos con MAX) pero nos puede ser útil para salir del paso.

jueves, 3 de abril de 2014

Leer active directory desde SQL

Para acceder desde SQL al LDAP hay que linkar nuestro servidor del Active directory con el servidor de SQL donde queremos hacer la consulta.
La lista de campos disponibles desde el LDAP la podeis encontrar en el siguiente link: lista de campos

Lo primero es linkar el servidor de la siguiente manera_
Exec
 sp_addlinkedserver 'ADSI'
, 'Active Directory Service Interfaces'
, 'ADSDSOObject'
, 'adsdatasource'

Le ponemos un usuario del dominio para que tenga acceso, bien con la instrucción:
EXEC sp_addlinkedsrvlogin 'ADSI', 'false', NULL, 'UsuarioDominio'
O desde las propiedades de la conexión creada (Servidores Vinculados)

En caso de que tengas el "Ad Hoc Distributed Queries" desabilitado, entonces corre esto para habilitarlo:
 sp_configure 'show advanced options'
, 1
reconfigure
go
sp_configure 'Ad Hoc Distributed Queries'
, 1
reconfigure
go



Para ejcutar las consultas, se hace utilizando OpenQuery y de la siguiente manera:
SELECT * FROM OpenQuery(ADSI, 'SELECT   physicalDeliveryOfficeName,sAMAccountName,cn,Name,displayName, sn,givenName,initials,moniker, personalTitle,generationQualifier ,userPrincipalName ,distinguishedName ,adsPath FROM ''LDAP://DC=mi-dominio,DC=local'' WHERE objectCategory=''user'' '

jueves, 20 de febrero de 2014

Saber si una columna concreta existe en una tabla

Estoy trabajando en un proyecto que pretende ser adaptable a varias bases de datos. En el, surge la necesidad de saber en una consulta de SQL si un campo existe en una tabla concreta o no existe.La consulta para averiguarlo es así: SELECTCASE WHEN (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_NAME = 'Empresa$Tabla' AND
COLUMN_NAME
= 'Columna') = 0 THEN 'NO TIENE COLUMNA Columna' ELSE 'SI TIENE COLUMNA Columna' END

Para averiguar si la Tabla existe sería así:
SELECTCASE WHEN (SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_NAME = 'Empresa$Tabla') = 0 THEN 'NO TIENE TABLA Empresa$Tabla' ELSE 'SI TIENE TABLA Empresa$Tabla' END

jueves, 31 de octubre de 2013

Crear un calendario en SQL

Para crear un calendario en sql que muestre todos los dias entre dos fechas he creado la siguiente funcion: CREATE
FUNCTION [dbo].[CALENDARIO]

(


-- Add the parameters for the function here

@fIni smalldatetime

,@fFin smalldatetime

)


RETURNS
@MyCalendario TABLE (FECHA smalldatetime)

BEGIN

DECLARE @d tinyint

SET @d = 0

WHILE @fIni <= @fFin

BEGIN

INSERT INTO @MyCalendario VALUES (@fIni)

SET @fIni = DATEADD(d, 1, @fIni)

END

RETURN

END

GO


Para hacer uso de ella es de la siguiente manera:
 SELECT *FROM[dbo].[CALENDARIO] ('01/01/13','31/12/13')  CALENDARIO