Creando inicios de sesión y usuarios en SQL Server 2008 23/01/2014
Posted by Gonzalo Rosas in Base de datos.Tags: login, T-SQL, user
add a comment
Para mi gusto, es más sencillo crear usuarios sobre línea de comandos que por asistentes, he aquí los comandos para hacerlo en T-SQL.
Use master;
go
CREATE LOGIN Remoto1
WITH PASSWORD = ‘utim’;
go
USE Becados;
go
CREATE USER Remoto1_Becado FOR LOGIN Remoto1;
GO
Ojo, si ya estas trabajando con SQL Server 2012, la sintaxis es diferente.
La diferencia entre inicio de sesión y un usuario de la base de datos, la específica muy bien el Gurú de Visual Basic “El GUILLE”, aquí.
Referencias.
Para crear Usuarios: http://msdn.microsoft.com/es-es/library/ms173463(v=sql.105).aspx
Para crear Inicios de sesión: http://msdn.microsoft.com/es-es/library/ms189751(v=sql.100).aspx
T-SQL Consultas con Pivot (referencias cruzadas parte 1) 20/01/2014
Posted by Gonzalo Rosas in Base de datos, IT Workers.Tags: join, pivot, T-SQL
2 comments
Para mis alumnos del curso de BDA.
El sábado pasado me atoré con una consulta T-SQL en clase. Aquí les dejo dos soluciones. Pero me gustaría que me comentaran.
- ¿Cuál es el enunciado de la consulta?
- ¿Cuál de las dos alternativas les parece más sencilla?
Les prometo que en la semana les doy la explicación de cada una.
Alternativa 1.
Select E.Escuela, IsNull(M.Mujeres,0) as Mujeres, IsNull(H.Hombres,0) as Hombres
From ( Select Escuela, count (curp) as Mujeres
From Becado
Where Substring (curp,11,1) = ‘M’
Group by Escuela
) M
right join (
Select Distinct Escuela
From Becado
) E
On M.Escuela = E.Escuela
left join (
Select Escuela, count (curp) as Hombres
From Becado
Where Substring (curp,11,1) = ‘H’ Group by Escuela
) H
On H.Escuela = E.Escuela
Alternativa 2
Select Escuela, M as Mujeres, H as Hombres
From (
Select Escuela, Substring (curp,11,1) as Genero, curp
From Becado
) Origen
Pivot (
Count (Origen.curp)
For origen.Genero In (M,H)
) as P;
Función en T-SQL para calcular la edad con base a la CURP 14/01/2014
Posted by Gonzalo Rosas in Base de datos, IT Workers.Tags: Curp, Function, T-SQL
4 comments
Los ejercicios de este cuatrimestre en Base de Datos para Aplicaciones, piden constantemente la edad para presentar una serie de datos, pero solo tenemos la curp para calcularla,es por eso que les dejo aquí un función en T-SQL para obtener la edad. Ya la había presentado en Oracle por lo que solo se hicieron algunos ajustes, espero les sirva. Si tienen una forma más simple para calcularla me lo hacen saber por favor.
Create function dbo.fEdadCurp (@Curp char(18))
Returns int
as
Begin
Declare @Edad int;
Declare @Año int;
Declare @Mes int;
Declare @Dia int;
Declare @AñoActual int;
Declare @MesActual int;
Declare @DiaActual int;
Set @AñoActual = Datepart(year,Getdate())
Set @MesActual = Datepart(month,Getdate())
Set @DiaActual = Datepart(day,Getdate())
Set @Año = 1900+ Cast (Substring (@curp,5,2) as int);
Set @Mes = Cast (Substring (@curp,7,2) as int);
Set @Dia = Cast (Substring (@curp,9,2) as int);
Set @Edad = @AñoActual-@Año-1;
If @MesActual>= @Mes
Begin
If @DiaActual>=@Dia
Begin
Set @Edad = @Edad +1;
End
End
Return (@Edad);
End;
Referencias:
http://msdn.microsoft.com/es-es/library/ms186755.aspx
http://blog.sqlauthority.com/2007/07/07/sql-server-convert-text-to-numbers-integer-cast-and-convert/
http://msdn.microsoft.com/es-es/library/ms174420.aspx
http://www.mssqltips.com/sqlservertip/1712/sql-server-function-to-convert-integer-date-to-datetime-format/