No hablo bien Castellano, y lamentablemente muchas palabras de tu mensaje no aparecen en mi diccionario..
Espero que tu puedas entender mi Castellano y mi TSQL:
Código SQL:
Ver originalCREATE TABLE CLIENTES(
COD_CLI CHAR(6) PRIMARY KEY ,
CLI_NOM VARCHAR(30) ,
CLI_APEP VARCHAR(30) ,
CLI_APEM VARCHAR(30) ,
CLI_TELF VARCHAR(30) ,
CLI_EMAIL VARCHAR(30) ,
CLI_DNI VARCHAR(9) ,
CLI_FNAC DATE ,
CLI_SEXO VARCHAR(1),
CLI_DIRE VARCHAR(30) ,
DIST_COD CHAR(6) ,
CLI_ESTADO CHAR(1),
USU_COD CHAR(6)NULL,
AUDT_FECACT DATE NULL ,
AUDT_USER CHAR(6) NULL
--CONSTRAINT FK_CLI_DIST FOREIGN KEY (DIST_COD) REFERENCES DISTRITO(COD_DIST),
--CONSTRAINT FK_CLI_USU FOREIGN KEY (AUDT_USER) REFERENCES USUARIO(COD_USU),
--CONSTRAINT FK_CLI_USU1 FOREIGN KEY (USU_COD) REFERENCES USUARIO(COD_USU)
)
CREATE TABLE MESA(
COD_MESA CHAR(6)PRIMARY KEY ,
MESA_DESC VARCHAR(30) ,
MESA_SILLAS INT ,
SEDE_COD CHAR(6),
MESA_FILA INT,
MESA_COLUMNA INT,
MESA_ESTADO CHAR(1) ,
MESA_TIPO CHAR(1),
MESA_PRECIO DECIMAL(7,2)
)
GO
CREATE TABLE RESERVACIONES(
COD_RESE CHAR(6) PRIMARY KEY ,
RESE_FECHA DATE ,
RESE_NPER INT ,
RESE_HORAE TIME ,
RESE_HORAS TIME ,
RESE_ESTADO CHAR(1),
CLI_COD CHAR(6)NULL,
MESA_COD CHAR(6)
CONSTRAINT FK_RESER_CLI FOREIGN KEY (CLI_COD) REFERENCES CLIENTES(COD_CLI),
CONSTRAINT FK_RESER_MESA FOREIGN KEY (MESA_COD) REFERENCES MESA(COD_MESA)
)
INSERT INTO CLIENTES(COD_CLI) SELECT 'MiClnt';
INSERT INTO MESA(COD_MESA) SELECT 'MiMesa';
INSERT INTO RESERVACIONES(COD_RESE,CLI_COD,MESA_COD,RESE_FECHA,RESE_HORAE,RESE_HORAS) SELECT '1.1','MiClnt','MiMesa','20130101','19:00:00.000','20:00:00.000';
INSERT INTO RESERVACIONES(COD_RESE,CLI_COD,MESA_COD,RESE_FECHA,RESE_HORAE,RESE_HORAS) SELECT '1.2','MiClnt','MiMesa','20130101','20:00:00.000','22:00:00.000';
INSERT INTO RESERVACIONES(COD_RESE,CLI_COD,MESA_COD,RESE_FECHA,RESE_HORAE,RESE_HORAS) SELECT '2.1','MiClnt','MiMesa','20130102','19:00:00.000','20:00:00.000';
INSERT INTO RESERVACIONES(COD_RESE,CLI_COD,MESA_COD,RESE_FECHA,RESE_HORAE,RESE_HORAS) SELECT '2.2','MiClnt','MiMesa','20130102','21:00:00.000','23:59:59.999';
INSERT INTO RESERVACIONES(COD_RESE,CLI_COD,MESA_COD,RESE_FECHA,RESE_HORAE,RESE_HORAS) SELECT '3','MiClnt','MiMesa','20130103','00:00:00.000','03:00:00.000';
WITH T AS
(SELECT ROW_NUMBER() OVER(Partition BY RESE_FECHA ORDER BY RESE_HORAE) N,
*
FROM RESERVACIONES)
SELECT IsNull(T1.RESE_FECHA,T2.RESE_FECHA) RESE_FECHA,
IsNull(T1.RESE_HORAS,'00:00:00.000') RESE_HORAS,
IsNull(T2.RESE_HORAE,'23:59:59.999') RESE_HORAE
FROM T T1
FULL JOIN T T2
ON T1.RESE_FECHA=T2.RESE_FECHA
AND T1.N=T2.N-1
WHERE IsNull(T1.RESE_HORAS,'00:00:00.000')<>IsNull(T2.RESE_HORAE,'23:59:59.999');