Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-12-2023
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Siempre primero pensar en crear el modelo de datos normalizando la información. En este caso crear la tabla de turnos, luego en armar la consulta:

Código SQL [-]
DROP TABLE IF EXISTS TURNO;

CREATE TABLE TURNO
(
  ID_TURNO INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT "Identificador único de registro",
  DESCRIPCION VARCHAR(100) NOT NULL COMMENT "Descripción del turno",
  DESDE TIME NOT NULL,
  HASTA TIME NOT NULL,
  PRIMARY KEY PK_TURNO (ID_TURNO)
);

INSERT INTO TURNO (DESCRIPCION, DESDE, HASTA) VALUES
('Amanecida', '00:01', '06:00'),
('Mañana',    '06:01', '12:00'),
('Tarde',     '12:01', '18:00'),
('Noche',     '18:01', '24:00');


SELECT DESCRIPCION, COUNT(*) 
FROM TURNO
JOIN VENTA ON TIME(FECHA) BETWEEN TURNO.DESDE AND TURNO.HASTA
GROUP BY TURNO.DESCRIPCION;

Ese ejemplo funciona en MySql.

PD: Le agregaría a la tabla TURNO un trigger de validación que no permita dos turnos en el mismo rango, y que el rango sea válido.

Saludos
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #2  
Antiguo 29-12-2023
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
lo solucioné de esta manera

-- aqui tengo las ventas en rango de fecha o en el dia.. dependiendo del where
Código SQL [-]
SELECT Left(hora,2) as hora, a.IDEN, Sum (d.PT) as PT into #d
  FROM TBLCONSUMOC c
  left join tblconsumod d on c.tdc = d.tdc and c.doc = d.doc
  left join tblarticulo a on d.kod = a.kod
  where
 convert(varchar, c.f_doc, 112) = '20231225' and ISNULL(c.sts,'') = ''
  group by Left(hora,2), a.iden
  order by Left(hora,2), a.iden

Código SQL [-]
  select r1.kod, r1.descl, SUM(PT) from (Select * from tblturno) r1, #d 
  where hora between r1.hini and r1.nfin
  group by r1.kod, r1.descl

aqui obtengo lo que deseo


lo dejo por si le puede servir a alguien
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Consulta rango de fechas con ADO y Access lbidi Varios 6 15-02-2019 20:29:56
Consulta Mysql Suma entre rango de fechas kaeltas MySQL 4 22-06-2012 21:30:44
Consulta Rango de Fechas soloriv SQL 7 23-06-2006 03:02:03
Consulta de rango de fechas con sql Yanet SQL 2 12-02-2005 02:07:04
Consulta sql con rango de fechas jgutti SQL 5 26-02-2004 18:51:54


La franja horaria es GMT +2. Ahora son las 11:07:28.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi