Si estas buscando algo como el SqlDataReader en SQL y un while (reader.read()) este es el equivalente en SQL Server.
Para recorrer una tabla y actualizar los valores de una columna utilizando un cursor. En este caso numeré una columna que necesitaba fuera la primary key de 1 en 1
declare @filas int,@idPais int,@idEstado int,@idCiudad int,@idCodigoPostal int
declare @contador int
set @contador=1;
DECLARE cCursor CURSOR
FOR
SELECT idPais,idEstado,idCiudad,idCodigoPostal from CodigosPostales
OPEN cCursor;
FETCH cCursor INTO @idPais,@idEstado,@idCiudad,@idCodigoPostal
WHILE (@@FETCH_STATUS = 0)
BEGIN
Update CodigosPostales set ID=@contador where idPais=@idPais AND idEstado=@idEstado AND idCiudad=@idCiudad AND idCodigoPostal=@idCodigoPostal
set @contador=@contador+1;
FETCH cCursor INTO @idPais,@idEstado,@idCiudad,@idCodigoPostal
END
CLOSE cCursor;
DEALLOCATE cCursor;
lunes, 5 de octubre de 2015
domingo, 20 de septiembre de 2015
MVC Control with read/write actions and views, using Entity Framework (Solución con la base de datos)
Recientemente comenzé a estudiar MVC y ahora que llegué al capítulos de la base datos Azure y a probarla con la creación de Controles tuve muchos problemas como los describo a continuación.
Primero intenté obtener una cuenta de Windows Azure, y Microsoft no me permitió en todo mi día libre obtener acceso a la base de datos de prueba.
Cuando intenté creando la base de datos "SistemaPruebas" en mi SQL Server 2014, voy a intento crear el control de el siguiente modo
y Me lanza un error "mvc scaffolding does not support entity framework 6 or later" y supuse que era por la base de datos. Pero fui al internet e investigué y pense que como decian poniendo el framework 5 se solucionaría el problema.
Pues lo instalé por la Package Manager Console y me lanzaba un error de que no reconocía el termino "provider" y tome como referencia un proyecto con una base de datos .mdf , me base en un proyecto que si me funciona e hice estos cambios al web.config del root
<add name="SistemaPruebas" connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\SistemaPruebas.mdf;Integrated Security=True" providerName="System.Data.SqlClient" />
<add name="ApplicationServices" connectionString="Data Source=(LocalDB)\v11.0;Integrated Security=True;AttachDBFilename=|DataDirectory|\aspnetdb.mdf" providerName="System.Data.SqlClient" />
Luego me lanzo este error
y fuí y comentarizé la siguiente línea en web.config
<!--<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>-->
No olviden hacer Build cada vez que hagan cambios al web.config
y vuelvan a intentar crear el control
finalmente el resultado es maravilloso
Crea el control con sus metodos
public class PhotoController : Controller
{
private PhotoSharingContext db = new PhotoSharingContext();
//
// GET: /Photo/
public ActionResult Index()
{
return View(db.Photos.ToList());
}
//
// GET: /Photo/Details/5
public ActionResult Details(int id = 0)
{
Photo photo = db.Photos.Find(id);
if (photo == null)
{
return HttpNotFound();
}
return View(photo);
}
//
// GET: /Photo/Create
public ActionResult Create()
{
return View();
}
//
// POST: /Photo/Create
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(Photo photo)
{
if (ModelState.IsValid)
{
db.Photos.Add(photo);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(photo);
}
//
// GET: /Photo/Edit/5
public ActionResult Edit(int id = 0)
{
Photo photo = db.Photos.Find(id);
if (photo == null)
{
return HttpNotFound();
}
return View(photo);
}
//
// POST: /Photo/Edit/5
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(Photo photo)
{
if (ModelState.IsValid)
{
db.Entry(photo).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(photo);
}
//
// GET: /Photo/Delete/5
public ActionResult Delete(int id = 0)
{
Photo photo = db.Photos.Find(id);
if (photo == null)
{
return HttpNotFound();
}
return View(photo);
}
//
// POST: /Photo/Delete/5
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public ActionResult DeleteConfirmed(int id)
{
Photo photo = db.Photos.Find(id);
db.Photos.Remove(photo);
db.SaveChanges();
return RedirectToAction("Index");
}
protected override void Dispose(bool disposing)
{
db.Dispose();
base.Dispose(disposing);
}
}
y 5 vistas de la carpeta View/Photo
Create.cshtml
Delete.cshtml
Details.cshtml
Edit.cshtml
Index.cshtml
Todo el código Html <.< todo todo lo crea.
Esta fué mi reseña creando controles con scaffoling y entityframework
Saludos
Primero intenté obtener una cuenta de Windows Azure, y Microsoft no me permitió en todo mi día libre obtener acceso a la base de datos de prueba.
Cuando intenté creando la base de datos "SistemaPruebas" en mi SQL Server 2014, voy a intento crear el control de el siguiente modo
y Me lanza un error "mvc scaffolding does not support entity framework 6 or later" y supuse que era por la base de datos. Pero fui al internet e investigué y pense que como decian poniendo el framework 5 se solucionaría el problema.
Pues lo instalé por la Package Manager Console y me lanzaba un error de que no reconocía el termino "provider" y tome como referencia un proyecto con una base de datos .mdf , me base en un proyecto que si me funciona e hice estos cambios al web.config del root
<add name="SistemaPruebas" connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\SistemaPruebas.mdf;Integrated Security=True" providerName="System.Data.SqlClient" />
<add name="ApplicationServices" connectionString="Data Source=(LocalDB)\v11.0;Integrated Security=True;AttachDBFilename=|DataDirectory|\aspnetdb.mdf" providerName="System.Data.SqlClient" />
Luego me lanzo este error
y fuí y comentarizé la siguiente línea en web.config
<!--<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>-->
No olviden hacer Build cada vez que hagan cambios al web.config
y vuelvan a intentar crear el control
finalmente el resultado es maravilloso
Crea el control con sus metodos
public class PhotoController : Controller
{
private PhotoSharingContext db = new PhotoSharingContext();
//
// GET: /Photo/
public ActionResult Index()
{
return View(db.Photos.ToList());
}
//
// GET: /Photo/Details/5
public ActionResult Details(int id = 0)
{
Photo photo = db.Photos.Find(id);
if (photo == null)
{
return HttpNotFound();
}
return View(photo);
}
//
// GET: /Photo/Create
public ActionResult Create()
{
return View();
}
//
// POST: /Photo/Create
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(Photo photo)
{
if (ModelState.IsValid)
{
db.Photos.Add(photo);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(photo);
}
//
// GET: /Photo/Edit/5
public ActionResult Edit(int id = 0)
{
Photo photo = db.Photos.Find(id);
if (photo == null)
{
return HttpNotFound();
}
return View(photo);
}
//
// POST: /Photo/Edit/5
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(Photo photo)
{
if (ModelState.IsValid)
{
db.Entry(photo).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(photo);
}
//
// GET: /Photo/Delete/5
public ActionResult Delete(int id = 0)
{
Photo photo = db.Photos.Find(id);
if (photo == null)
{
return HttpNotFound();
}
return View(photo);
}
//
// POST: /Photo/Delete/5
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public ActionResult DeleteConfirmed(int id)
{
Photo photo = db.Photos.Find(id);
db.Photos.Remove(photo);
db.SaveChanges();
return RedirectToAction("Index");
}
protected override void Dispose(bool disposing)
{
db.Dispose();
base.Dispose(disposing);
}
}
y 5 vistas de la carpeta View/Photo
Create.cshtml
Delete.cshtml
Details.cshtml
Edit.cshtml
Index.cshtml
Todo el código Html <.< todo todo lo crea.
Esta fué mi reseña creando controles con scaffoling y entityframework
Saludos
sábado, 22 de agosto de 2015
Programación T SQL para llenar o actualizar una tabla
Me vi en la necesidad de agregar todos los productos en todos los almacenes para poder realizar mis pruebas del sistema de administración. Programé el siguiente método. que tardó 13 segundos la primera vez y 7 la segunda vez (cuando ya existían todas las filas)
Lo que hace es buscar por cada producto (5520) si éste maneja inventario y si es así agrega a cada almacén (23 en total) la cantidad de 500 productos en existencia.
DECLARE @idProducto char(5)='1';
DECLARE @idAlmacen char(2)='1';
DECLARE @inventario bit;
BEGIN TRY
WHILE CAST(@idProducto as int)<5520
BEGIN
WHILE CAST(@idAlmacen as int)<=23
BEGIN
Select @inventario=CAST((Select Inventario from AdmProductos where idProducto=@idProducto) as bit)
if @inventario=1
BEGIN
IF EXISTS (Select * from AdmProductosAlmacenes where idAlmacen=@idAlmacen AND idProducto=@idProducto)
Update AdmProductosAlmacenes set Entradas=0,Salidas=0,Existencia=500 where idAlmacen=@idAlmacen AND idProducto=@idProducto
ELSE
Insert into AdmProductosAlmacenes values (@idProducto,@idAlmacen,0,0,0,0,500);
END
else
print('el producto #'+@idProducto+' no maneja inventario');
select @idAlmacen=(CAST(@idAlmacen as int)+1)
END
set @idAlmacen='1';
select @idProducto=(CAST(@idProducto as int)+1)
print('Producto #'+@idProducto);
END
END TRY
BEGIN CATCH
print(ERROR_MESSAGE());
END CATCH
Lo que hace es buscar por cada producto (5520) si éste maneja inventario y si es así agrega a cada almacén (23 en total) la cantidad de 500 productos en existencia.
DECLARE @idProducto char(5)='1';
DECLARE @idAlmacen char(2)='1';
DECLARE @inventario bit;
BEGIN TRY
WHILE CAST(@idProducto as int)<5520
BEGIN
WHILE CAST(@idAlmacen as int)<=23
BEGIN
Select @inventario=CAST((Select Inventario from AdmProductos where idProducto=@idProducto) as bit)
if @inventario=1
BEGIN
IF EXISTS (Select * from AdmProductosAlmacenes where idAlmacen=@idAlmacen AND idProducto=@idProducto)
Update AdmProductosAlmacenes set Entradas=0,Salidas=0,Existencia=500 where idAlmacen=@idAlmacen AND idProducto=@idProducto
ELSE
Insert into AdmProductosAlmacenes values (@idProducto,@idAlmacen,0,0,0,0,500);
END
else
print('el producto #'+@idProducto+' no maneja inventario');
select @idAlmacen=(CAST(@idAlmacen as int)+1)
END
set @idAlmacen='1';
select @idProducto=(CAST(@idProducto as int)+1)
print('Producto #'+@idProducto);
END
END TRY
BEGIN CATCH
print(ERROR_MESSAGE());
END CATCH
sábado, 8 de agosto de 2015
Como hacerle una consulta a otra consulta? Subqueries SQL Server
En ocasiones realizamos consultas que quedan casi perfectas, o nuestro poco conocimiento nos permite arreglar el resultado sin enredarnos más. Bueno pues para eso usen las consultas sobre consultas
Observen la siguiente imagen fué creada con el siguiente código:
SELECT DISTINCT venta.idVenta, producto.Producto, venta.Precio,
(SELECT SUM(Cantidad) AS Expr1 FROM Abonos WHERE (idCliente = abono.idCliente) AND (idVenta = abono.idVenta)) AS TotalAbonado,
(SELECT venta.Precio - SUM(Cantidad) AS Expr1
FROM Abonos AS Abonos_1
WHERE (idCliente = abono.idCliente) AND (idVenta = abono.idVenta)) AS Saldo,
CONVERT (varchar(10), venta.FechaVenta, 103) AS Fecha FROM Ventas AS venta
LEFT OUTER JOIN Abonos AS abono ON abono.idCliente = venta.idCliente AND abono.idVenta = venta.idVenta
LEFT OUTER JOIN Productos AS producto ON producto.idProducto = venta.idProducto
WHERE venta.idCliente = 1 AND venta.Pagado = 'False' AND venta.Cancelado = 'False'
No importa si no entienden la consulta.. se les va a presentar el caso.
Pero que es eso de null¡ cuando no se encuentran pagos de un artículo las columnas total abonado y Saldo me aparecen en blanco
Pues para eso le voy a hacer otra consulta a esta tabla y con el uso de la sentencia isnull asignaré valores ami antojo, quedando de la siguiente forma:
Select idVenta,Producto,Precio,isnull(TotalAbonado,0) TotalAbonado,isnull(Saldo,Precio) Saldo,Fecha from (Select tu primera consulta) as #Temp
o así para traer todas las columnas
Select * from (Select tu primera consulta) as #Temp
y si no entendiste algo aquí está la consulta completa
Select * from (SELECT DISTINCT venta.idVenta, producto.Producto, venta.Precio,
(SELECT SUM(Cantidad) AS Expr1 FROM Abonos WHERE (idCliente = abono.idCliente) AND (idVenta = abono.idVenta)) AS TotalAbonado,
(SELECT venta.Precio - SUM(Cantidad) AS Expr1
FROM Abonos AS Abonos_1
WHERE (idCliente = abono.idCliente) AND (idVenta = abono.idVenta)) AS Saldo,
CONVERT (varchar(10), venta.FechaVenta, 103) AS Fecha FROM Ventas AS venta
LEFT OUTER JOIN Abonos AS abono ON abono.idCliente = venta.idCliente AND abono.idVenta = venta.idVenta
LEFT OUTER JOIN Productos AS producto ON producto.idProducto = venta.idProducto
WHERE venta.idCliente = 1 AND venta.Pagado = 'False' AND venta.Cancelado = 'False' ) as #Temp
y el resultado visual,donde la venta 4 no tiene abonos y muetra valores en las columnas que antes eran null
Sé que lo vas a necesitar ;)
Observen la siguiente imagen fué creada con el siguiente código:
SELECT DISTINCT venta.idVenta, producto.Producto, venta.Precio,
(SELECT SUM(Cantidad) AS Expr1 FROM Abonos WHERE (idCliente = abono.idCliente) AND (idVenta = abono.idVenta)) AS TotalAbonado,
(SELECT venta.Precio - SUM(Cantidad) AS Expr1
FROM Abonos AS Abonos_1
WHERE (idCliente = abono.idCliente) AND (idVenta = abono.idVenta)) AS Saldo,
CONVERT (varchar(10), venta.FechaVenta, 103) AS Fecha FROM Ventas AS venta
LEFT OUTER JOIN Abonos AS abono ON abono.idCliente = venta.idCliente AND abono.idVenta = venta.idVenta
LEFT OUTER JOIN Productos AS producto ON producto.idProducto = venta.idProducto
WHERE venta.idCliente = 1 AND venta.Pagado = 'False' AND venta.Cancelado = 'False'
No importa si no entienden la consulta.. se les va a presentar el caso.
Pero que es eso de null¡ cuando no se encuentran pagos de un artículo las columnas total abonado y Saldo me aparecen en blanco
Pues para eso le voy a hacer otra consulta a esta tabla y con el uso de la sentencia isnull asignaré valores ami antojo, quedando de la siguiente forma:
Select idVenta,Producto,Precio,isnull(TotalAbonado,0) TotalAbonado,isnull(Saldo,Precio) Saldo,Fecha from (Select tu primera consulta) as #Temp
o así para traer todas las columnas
Select * from (Select tu primera consulta) as #Temp
y si no entendiste algo aquí está la consulta completa
Select * from (SELECT DISTINCT venta.idVenta, producto.Producto, venta.Precio,
(SELECT SUM(Cantidad) AS Expr1 FROM Abonos WHERE (idCliente = abono.idCliente) AND (idVenta = abono.idVenta)) AS TotalAbonado,
(SELECT venta.Precio - SUM(Cantidad) AS Expr1
FROM Abonos AS Abonos_1
WHERE (idCliente = abono.idCliente) AND (idVenta = abono.idVenta)) AS Saldo,
CONVERT (varchar(10), venta.FechaVenta, 103) AS Fecha FROM Ventas AS venta
LEFT OUTER JOIN Abonos AS abono ON abono.idCliente = venta.idCliente AND abono.idVenta = venta.idVenta
LEFT OUTER JOIN Productos AS producto ON producto.idProducto = venta.idProducto
WHERE venta.idCliente = 1 AND venta.Pagado = 'False' AND venta.Cancelado = 'False' ) as #Temp
y el resultado visual,donde la venta 4 no tiene abonos y muetra valores en las columnas que antes eran null
Sé que lo vas a necesitar ;)
sábado, 25 de julio de 2015
Ejecutar función de Javascript cada cierto tiempo por cierto tiempo
Esta vez necesitaba programar el autoguardado de una página y me metí con los 3 eventos del tiempo de javascript. Investigando y cometiendo muchos errores dí finalmente con esta página
https://www.pedroventura.com/javascript/funciones-javascript-setinterval-clearinterval-settimeout-2/
Donde nos explican los 3 eventos
FUNCIONES JAVASCRIPT – SETINTERVAL() CLEARINTERVAL() SETTIMEOUT() – 2
Mi código quedó así
Solamente para javascript, este es un evento invocado desde servidor
var repeticion;
function ParpadeoGuardadoAutomatico() {
repeticion = window.setInterval("Parpadeo()", 500);
window.setTimeout("clearTimeout(repeticion);", 4100);
}
function Parpadeo() {
if ((document.getElementById('imgAutoGuardado').style.display == 'block'))
document.getElementById('imgAutoGuardado').style.display = 'none';
else
document.getElementById('imgAutoGuardado').style.display = 'block';
}
Lo que hace es cada vez que mi Timer se activa hace sus procesos en el servidor y llama al evento
ParpadeoGuardadoAutomatico();
Este evento crea la variable repetición que dice que se ejecute el cambio de visibilidad de la imagen cada medio segundo, esto sucedería infinitamente si no destruyera la variable con clearTimeout(repeticion);, pero además le tuve que indicar en que momento se va a detener el parpadeo y le puse a los 4 segundos, apenas aparece y desaparece 4 veces.
Para los que no saben que es el Timer de asp,net
<div style='text-align:right; position:absolute; right:0px; top:0px;'>
<img id="imgAutoGuardado" style="display:block;" src="../../Imagenes/Iconos/AutoGuardado.fw.png" />
<asp:UpdatePanel ID="UpdatePanel16" runat="server">
<ContentTemplate>
<asp:Timer ID="TimerAutoGuardado" Interval="10000" runat="server" ontick="TimerAutoGuardado_Tick"></asp:Timer>
<asp:HiddenField ID="HiddenContadorGuardado" Value="0" Visible="true" runat="server" />
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="TimerAutoGuardado" EventName="Tick" />
</Triggers>
</asp:UpdatePanel>
</div>
lunes, 20 de julio de 2015
Visual Studio Lento al correr
En el web config..
<compilation debug="true" optimizeCompilations="true" targetFramework="4.0">
En la barra de menu
Build/Debug/Delete All Break points
<compilation debug="true" optimizeCompilations="true" targetFramework="4.0">
En la barra de menu
Build/Debug/Delete All Break points
martes, 7 de julio de 2015
Concatenar columnas basándose en sentencia case
Concatenar columnas basándose en condiciones
-Distintos valores si es nullo o no
-Espacios al final
-Unir columnas generadas con sentencia case
Select RTRIM(paciente.Nombre)+' '+RTRIM(paciente.Ap_Paterno)+' '+ RTRIM(paciente.Ap_Materno) Paciente,
paciente.Sexo,CAST((DATEDIFF(DAY,paciente.Fecha_Nacimiento,GETDATE())/365)as CHAR(15))+' años' Edad,
CASE WHEN (cie10Urgencias1.Diagnostico IS NULL) THEN '' ELSE cie10Urgencias1.Diagnostico+' ['+cie10Urgencias1.idDiagnostico+']'+CHAR(10) END +
CASE WHEN (cie10Urgencias2.Diagnostico IS NULL) THEN '' ELSE cie10Urgencias2.Diagnostico+' ['+cie10Urgencias2.idDiagnostico+']'+CHAR(10) END +
CASE WHEN (cie10Urgencias3.Diagnostico IS NULL) THEN '' ELSE cie10Urgencias3.Diagnostico+' ['+cie10Urgencias3.idDiagnostico+']'+CHAR(10) END +
CASE WHEN (cie10Urgencias4.Diagnostico IS NULL) THEN '' ELSE cie10Urgencias4.Diagnostico+' ['+cie10Urgencias4.idDiagnostico+']'+CHAR(10) END +
CASE WHEN (cie10Urgencias5.Diagnostico IS NULL) THEN '' ELSE cie10Urgencias5.Diagnostico+' ['+cie10Urgencias5.idDiagnostico+']'+CHAR(10) END AS Cie10Urgencias,
CASE WHEN (cie10Hospital1.Diagnostico IS NULL) THEN '' ELSE cie10Hospital1.Diagnostico+' ['+cie10Hospital1.idDiagnostico+']'+CHAR(10) END +
CASE WHEN (cie10Hospital2.Diagnostico IS NULL) THEN '' ELSE cie10Hospital2.Diagnostico+' ['+cie10Hospital2.idDiagnostico+']'+CHAR(10) END +
CASE WHEN (cie10Hospital3.Diagnostico IS NULL) THEN '' ELSE cie10Hospital3.Diagnostico+' ['+cie10Hospital3.idDiagnostico+']'+CHAR(10) END +
CASE WHEN (cie10Hospital4.Diagnostico IS NULL) THEN '' ELSE cie10Hospital4.Diagnostico+' ['+cie10Hospital4.idDiagnostico+']'+CHAR(10) END +
CASE WHEN (cie10Hospital5.Diagnostico IS NULL) THEN '' ELSE cie10Hospital5.Diagnostico+' ['+cie10Hospital5.idDiagnostico+']'+CHAR(10) END AS Cie10Hospital,
RTRIM(usuario.Nombre)+' '+RTRIM(usuario.Ap_Paterno)+' '+ RTRIM(usuario.Ap_Materno) Médico
from AdmIngresosPacientes as ingresos
LEFT JOIN ExpPacientes as paciente on paciente.idPaciente=ingresos.idPaciente
LEFT JOIN ExpNotaIngresoUrgencias as notaUrgencias on notaUrgencias.idPaciente=ingresos.idPaciente AND notaUrgencias.idIngreso=ingresos.idIngreso
LEFT JOIN ExpNotaIngresoHospital as notahospital on notahospital.idPaciente=ingresos.idPaciente AND notahospital.idIngreso=ingresos.idIngreso
LEFT JOIN ExpUsuarios as usuario on usuario.idUsuario=ingresos.Doctor
LEFT JOIN ExpCie10_Diagnosticos as cie10Urgencias1 on cie10Urgencias1.idDiagnostico=notaUrgencias.DiagnosticoCie10_1
LEFT JOIN ExpCie10_Diagnosticos as cie10Urgencias2 on cie10Urgencias2.idDiagnostico=notaUrgencias.DiagnosticoCie10_2
LEFT JOIN ExpCie10_Diagnosticos as cie10Urgencias3 on cie10Urgencias3.idDiagnostico=notaUrgencias.DiagnosticoCie10_3
LEFT JOIN ExpCie10_Diagnosticos as cie10Urgencias4 on cie10Urgencias4.idDiagnostico=notaUrgencias.DiagnosticoCie10_4
LEFT JOIN ExpCie10_Diagnosticos as cie10Urgencias5 on cie10Urgencias5.idDiagnostico=notaUrgencias.DiagnosticoCie10_5
LEFT JOIN ExpCie10_Diagnosticos as cie10Hospital1 on cie10Hospital1.idDiagnostico=notahospital.DiagnosticoCie10_1
LEFT JOIN ExpCie10_Diagnosticos as cie10Hospital2 on cie10Hospital2.idDiagnostico=notahospital.DiagnosticoCie10_2
LEFT JOIN ExpCie10_Diagnosticos as cie10Hospital3 on cie10Hospital3.idDiagnostico=notahospital.DiagnosticoCie10_3
LEFT JOIN ExpCie10_Diagnosticos as cie10Hospital4 on cie10Hospital4.idDiagnostico=notahospital.DiagnosticoCie10_4
LEFT JOIN ExpCie10_Diagnosticos as cie10Hospital5 on cie10Hospital5.idDiagnostico=notahospital.DiagnosticoCie10_5
-Distintos valores si es nullo o no
-Espacios al final
-Unir columnas generadas con sentencia case
Select RTRIM(paciente.Nombre)+' '+RTRIM(paciente.Ap_Paterno)+' '+ RTRIM(paciente.Ap_Materno) Paciente,
paciente.Sexo,CAST((DATEDIFF(DAY,paciente.Fecha_Nacimiento,GETDATE())/365)as CHAR(15))+' años' Edad,
CASE WHEN (cie10Urgencias1.Diagnostico IS NULL) THEN '' ELSE cie10Urgencias1.Diagnostico+' ['+cie10Urgencias1.idDiagnostico+']'+CHAR(10) END +
CASE WHEN (cie10Urgencias2.Diagnostico IS NULL) THEN '' ELSE cie10Urgencias2.Diagnostico+' ['+cie10Urgencias2.idDiagnostico+']'+CHAR(10) END +
CASE WHEN (cie10Urgencias3.Diagnostico IS NULL) THEN '' ELSE cie10Urgencias3.Diagnostico+' ['+cie10Urgencias3.idDiagnostico+']'+CHAR(10) END +
CASE WHEN (cie10Urgencias4.Diagnostico IS NULL) THEN '' ELSE cie10Urgencias4.Diagnostico+' ['+cie10Urgencias4.idDiagnostico+']'+CHAR(10) END +
CASE WHEN (cie10Urgencias5.Diagnostico IS NULL) THEN '' ELSE cie10Urgencias5.Diagnostico+' ['+cie10Urgencias5.idDiagnostico+']'+CHAR(10) END AS Cie10Urgencias,
CASE WHEN (cie10Hospital1.Diagnostico IS NULL) THEN '' ELSE cie10Hospital1.Diagnostico+' ['+cie10Hospital1.idDiagnostico+']'+CHAR(10) END +
CASE WHEN (cie10Hospital2.Diagnostico IS NULL) THEN '' ELSE cie10Hospital2.Diagnostico+' ['+cie10Hospital2.idDiagnostico+']'+CHAR(10) END +
CASE WHEN (cie10Hospital3.Diagnostico IS NULL) THEN '' ELSE cie10Hospital3.Diagnostico+' ['+cie10Hospital3.idDiagnostico+']'+CHAR(10) END +
CASE WHEN (cie10Hospital4.Diagnostico IS NULL) THEN '' ELSE cie10Hospital4.Diagnostico+' ['+cie10Hospital4.idDiagnostico+']'+CHAR(10) END +
CASE WHEN (cie10Hospital5.Diagnostico IS NULL) THEN '' ELSE cie10Hospital5.Diagnostico+' ['+cie10Hospital5.idDiagnostico+']'+CHAR(10) END AS Cie10Hospital,
RTRIM(usuario.Nombre)+' '+RTRIM(usuario.Ap_Paterno)+' '+ RTRIM(usuario.Ap_Materno) Médico
from AdmIngresosPacientes as ingresos
LEFT JOIN ExpPacientes as paciente on paciente.idPaciente=ingresos.idPaciente
LEFT JOIN ExpNotaIngresoUrgencias as notaUrgencias on notaUrgencias.idPaciente=ingresos.idPaciente AND notaUrgencias.idIngreso=ingresos.idIngreso
LEFT JOIN ExpNotaIngresoHospital as notahospital on notahospital.idPaciente=ingresos.idPaciente AND notahospital.idIngreso=ingresos.idIngreso
LEFT JOIN ExpUsuarios as usuario on usuario.idUsuario=ingresos.Doctor
LEFT JOIN ExpCie10_Diagnosticos as cie10Urgencias1 on cie10Urgencias1.idDiagnostico=notaUrgencias.DiagnosticoCie10_1
LEFT JOIN ExpCie10_Diagnosticos as cie10Urgencias2 on cie10Urgencias2.idDiagnostico=notaUrgencias.DiagnosticoCie10_2
LEFT JOIN ExpCie10_Diagnosticos as cie10Urgencias3 on cie10Urgencias3.idDiagnostico=notaUrgencias.DiagnosticoCie10_3
LEFT JOIN ExpCie10_Diagnosticos as cie10Urgencias4 on cie10Urgencias4.idDiagnostico=notaUrgencias.DiagnosticoCie10_4
LEFT JOIN ExpCie10_Diagnosticos as cie10Urgencias5 on cie10Urgencias5.idDiagnostico=notaUrgencias.DiagnosticoCie10_5
LEFT JOIN ExpCie10_Diagnosticos as cie10Hospital1 on cie10Hospital1.idDiagnostico=notahospital.DiagnosticoCie10_1
LEFT JOIN ExpCie10_Diagnosticos as cie10Hospital2 on cie10Hospital2.idDiagnostico=notahospital.DiagnosticoCie10_2
LEFT JOIN ExpCie10_Diagnosticos as cie10Hospital3 on cie10Hospital3.idDiagnostico=notahospital.DiagnosticoCie10_3
LEFT JOIN ExpCie10_Diagnosticos as cie10Hospital4 on cie10Hospital4.idDiagnostico=notahospital.DiagnosticoCie10_4
LEFT JOIN ExpCie10_Diagnosticos as cie10Hospital5 on cie10Hospital5.idDiagnostico=notahospital.DiagnosticoCie10_5
Suscribirse a:
Entradas (Atom)




