Ver Mensaje Individual
  #4  
Antiguo 21-03-2012
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Reputación: 21
gluglu Va por buen camino
Gracias a todos por vuestros comentarios, pero sobre todo a Caro.

Justo ahora había encontrado ahora esa misma solución en otro sitio en Internet.

Lo he probabo ya y funciona !


Para el que quiere ver mi consulta completa, tal y como quedó :

Código SQL [-]
Select Q_SELA.OUT_DATE, Q_SELA.INTERNALNO, Q_SELA.WEEKEND,
       Q_SELA.CATEGORYNO, Q_SELA.SUBCATEGORYNO, Q_SELA.VIRTUALNO,
       Q_SELA.APPLYON, Q_SELA.REAL_ALLOTMENT_CLOSE, Q_SELA.QUANTITY
from
  (Select OUT_DATE, INTERNALNO, WEEKEND,
          CATEGORYNO, SUBCATEGORYNO, VIRTUALNO,
          1 as APPLYON, REAL_ALLOTMENT_CLOSE, QUANTITY
   from
     (Select Count(*) as NUM_HITS, OUT_DATE, INTERNALNO, WEEKEND,
             CATEGORYNO, SUBCATEGORYNO, VIRTUALNO,
             APPLYON, REAL_ALLOTMENT_CLOSE, QUANTITY
      from
        (Select AID.OUT_DATE,
                AOL.INTERNALNO, AOL.WEEKEND,
                AOL.CATEGORYNO, AOL.SUBCATEGORYNO, Coalesce(AOL.VIRTUALNO, 0) as VIRTUALNO,
                AOL.APPLYON, AOL.REAL_ALLOTMENT_CLOSE, AOL.QUANTITY
         from AVAIL_ONLINE AOL
         left join AUTO_INC_DATE('03-24-2012', 3) AID
           on 1 = 1
         left join SEASONS_DATES SD
           on SD.CODENAME = AOL.SEASONCODE
           and AID.OUT_DATE between SD.DATEFROM and SD.DATETO
         left join AVAIL_ONLINE_CONDITIONS AOC
           on AOC.INTERNALNO = AOL.INTERNALNO
         left join AVAIL_CALC_TEMP ACT
           on ACT.RANDOMNO    = 1
           and ACT.CATEGORYNO    = AOC.CATEGORYNO
           and ACT.SUBCATEGORYNO = Coalesce(AOC.SUBCATEGORYNO, 0)
           and ACT.INTV_AVAIL    = Coalesce(AOC.AVAILABILITYGRP, 0)
           and ACT.DATE_AVAIL    = AID.OUT_DATE
         left join FIXEDVALUES FX
           on FX.BUILDINGNO = 2
           and AID.OUT_DATE between FX.DATEFROM and FX.DATETO
         where AOL.BUILDINGNO  = 2
         and AOL.CATEGORYNO    = 1
         and ((AOL.DATEFROM   <= '03-26-2012'
               and AOL.DATETO >= '03-24-2012')
              or (AOL.SEASONCODE in
                  (Select Distinct(CODENAME) from SEASONS_DATES SD
                   where SD.DATEFROM <= '03-26-2012'
                   and SD.DATETO     >= '03-24-2012'
                  and SD.BUILDINGNO  = 2)))
         and ((AID.OUT_DATE between AOL.DATEFROM and AOL.DATETO) or
              (AID.OUT_DATE between SD.DATEFROM and SD.DATETO))
         and ((Q_ANTIRELEASE is Null) or
              (TYPE_Q_ANTIRELEASE = 1 and AID.OUT_DATE >= Current_Date + Q_ANTIRELEASE) or
              (TYPE_Q_ANTIRELEASE = 2 and AID.OUT_DATE >= Current_Date + (Q_ANTIRELEASE*7)))
         and ((Q_RELEASE is Null) or
              (TYPE_Q_RELEASE = 1 and AID.OUT_DATE <= Current_Date + Q_RELEASE) or
              (TYPE_Q_RELEASE = 2 and AID.OUT_DATE <= Current_Date + (Q_RELEASE*7)))
         and ((AOC.LESS_MORE_THAN = 1 and ACT.NUM_OBJECTS - ACT.NUM_LOCKED - ACT.NUM_BOOKINGS <= AOC.QUANTITY) or
              (AOC.LESS_MORE_THAN = 2 and ACT.NUM_OBJECTS - ACT.NUM_LOCKED - ACT.NUM_BOOKINGS >= AOC.QUANTITY))
         and (AOL.WEEKEND = 0 or (AOL.WEEKEND = 1 and Position(Cast(Extract(WeekDay from AID.OUT_DATE-1)+1 as CHAR) in FX.WEEKEND_DAYS) <> 0)))
      group by OUT_DATE, INTERNALNO, WEEKEND, CATEGORYNO, SUBCATEGORYNO,
               VIRTUALNO, APPLYON, REAL_ALLOTMENT_CLOSE, QUANTITY) Q_SEL
      where NUM_HITS = (Select Count(*) from AVAIL_ONLINE_CONDITIONS AOC2
                        where AOC2.INTERNALNO = Q_SEL.INTERNALNO)
      and Position('1' in Q_SEL.APPLYON) <> 0
   union
   Select OUT_DATE, INTERNALNO, WEEKEND,
          CATEGORYNO, SUBCATEGORYNO, VIRTUALNO,
          2 as APPLYON, REAL_ALLOTMENT_CLOSE, QUANTITY
   from
     (Select Count(*) as NUM_HITS, OUT_DATE, INTERNALNO, WEEKEND,
             CATEGORYNO, SUBCATEGORYNO, VIRTUALNO,
             APPLYON, REAL_ALLOTMENT_CLOSE, QUANTITY
      from
        (Select AID.OUT_DATE,
                AOL.INTERNALNO, AOL.WEEKEND,
                AOL.CATEGORYNO, AOL.SUBCATEGORYNO, Coalesce(AOL.VIRTUALNO, 0) as VIRTUALNO,
                AOL.APPLYON, AOL.REAL_ALLOTMENT_CLOSE, AOL.QUANTITY
         from AVAIL_ONLINE AOL
         left join AUTO_INC_DATE('03-24-2012', 3) AID
           on 1 = 1
         left join SEASONS_DATES SD
           on SD.CODENAME = AOL.SEASONCODE
           and AID.OUT_DATE between SD.DATEFROM and SD.DATETO
         left join AVAIL_ONLINE_CONDITIONS AOC
           on AOC.INTERNALNO = AOL.INTERNALNO
         left join AVAIL_CALC_TEMP ACT
           on ACT.RANDOMNO    = 1
           and ACT.CATEGORYNO    = AOC.CATEGORYNO
           and ACT.SUBCATEGORYNO = Coalesce(AOC.SUBCATEGORYNO, 0)
           and ACT.INTV_AVAIL    = Coalesce(AOC.AVAILABILITYGRP, 0)
           and ACT.DATE_AVAIL    = AID.OUT_DATE
         left join FIXEDVALUES FX
           on FX.BUILDINGNO = 2
           and AID.OUT_DATE between FX.DATEFROM and FX.DATETO
         where AOL.BUILDINGNO  = 2
         and AOL.CATEGORYNO    = 1
         and ((AOL.DATEFROM   <= '03-26-2012'
               and AOL.DATETO >= '03-24-2012')
              or (AOL.SEASONCODE in
                  (Select Distinct(CODENAME) from SEASONS_DATES SD
                   where SD.DATEFROM <= '03-26-2012'
                   and SD.DATETO     >= '03-24-2012'
                   and SD.BUILDINGNO  = 2)))
         and ((AID.OUT_DATE between AOL.DATEFROM and AOL.DATETO) or
              (AID.OUT_DATE between SD.DATEFROM and SD.DATETO))
         and ((Q_ANTIRELEASE is Null) or
              (TYPE_Q_ANTIRELEASE = 1 and AID.OUT_DATE >= Current_Date + Q_ANTIRELEASE) or
              (TYPE_Q_ANTIRELEASE = 2 and AID.OUT_DATE >= Current_Date + (Q_ANTIRELEASE*7)))
         and ((Q_RELEASE is Null) or
              (TYPE_Q_RELEASE = 1 and AID.OUT_DATE <= Current_Date + Q_RELEASE) or
              (TYPE_Q_RELEASE = 2 and AID.OUT_DATE <= Current_Date + (Q_RELEASE*7)))
         and ((AOC.LESS_MORE_THAN = 1 and ACT.NUM_OBJECTS - ACT.NUM_LOCKED - ACT.NUM_BOOKINGS <= AOC.QUANTITY) or
              (AOC.LESS_MORE_THAN = 2 and ACT.NUM_OBJECTS - ACT.NUM_LOCKED - ACT.NUM_BOOKINGS >= AOC.QUANTITY))
         and (AOL.WEEKEND = 0 or (AOL.WEEKEND = 1 and Position(Cast(Extract(WeekDay from AID.OUT_DATE-1)+1 as CHAR) in FX.WEEKEND_DAYS) <> 0)))
      group by OUT_DATE, INTERNALNO, WEEKEND, CATEGORYNO, SUBCATEGORYNO,
               VIRTUALNO, APPLYON, REAL_ALLOTMENT_CLOSE, QUANTITY) Q_SEL
      where NUM_HITS = (Select Count(*) from AVAIL_ONLINE_CONDITIONS AOC2
                        where AOC2.INTERNALNO = Q_SEL.INTERNALNO)
      and Position('2' in Q_SEL.APPLYON) <> 0) Q_SELA
left join
  (Select OUT_DATE, CATEGORYNO, SUBCATEGORYNO, VIRTUALNO, APPLYON,
          Max(WEEKEND) as WEEKEND
   from
     (Select OUT_DATE, INTERNALNO, WEEKEND,
             CATEGORYNO, SUBCATEGORYNO, VIRTUALNO,
             1 as APPLYON, REAL_ALLOTMENT_CLOSE, QUANTITY
      from
        (Select Count(*) as NUM_HITS, OUT_DATE, INTERNALNO, WEEKEND,
                CATEGORYNO, SUBCATEGORYNO, VIRTUALNO,
                APPLYON, REAL_ALLOTMENT_CLOSE, QUANTITY
         from
           (Select AID.OUT_DATE,
                   AOL.INTERNALNO, AOL.WEEKEND,
                   AOL.CATEGORYNO, AOL.SUBCATEGORYNO, Coalesce(AOL.VIRTUALNO, 0) as VIRTUALNO,
                   AOL.APPLYON, AOL.REAL_ALLOTMENT_CLOSE, AOL.QUANTITY
            from AVAIL_ONLINE AOL
            left join AUTO_INC_DATE('03-24-2012', 3) AID
              on 1 = 1
            left join SEASONS_DATES SD
              on SD.CODENAME = AOL.SEASONCODE
              and AID.OUT_DATE between SD.DATEFROM and SD.DATETO
            left join AVAIL_ONLINE_CONDITIONS AOC
              on AOC.INTERNALNO = AOL.INTERNALNO
            left join AVAIL_CALC_TEMP ACT
              on ACT.RANDOMNO    = 1
              and ACT.CATEGORYNO    = AOC.CATEGORYNO
              and ACT.SUBCATEGORYNO = Coalesce(AOC.SUBCATEGORYNO, 0)
              and ACT.INTV_AVAIL    = Coalesce(AOC.AVAILABILITYGRP, 0)
              and ACT.DATE_AVAIL    = AID.OUT_DATE
            left join FIXEDVALUES FX
              on FX.BUILDINGNO = 2
              and AID.OUT_DATE between FX.DATEFROM and FX.DATETO
            where AOL.BUILDINGNO  = 2
            and AOL.CATEGORYNO    = 1
            and ((AOL.DATEFROM   <= '03-26-2012'
                  and AOL.DATETO >= '03-24-2012')
                 or (AOL.SEASONCODE in
                     (Select Distinct(CODENAME) from SEASONS_DATES SD
                      where SD.DATEFROM <= '03-26-2012'
                      and SD.DATETO     >= '03-24-2012'
                      and SD.BUILDINGNO  = 2)))
            and ((AID.OUT_DATE between AOL.DATEFROM and AOL.DATETO) or
                 (AID.OUT_DATE between SD.DATEFROM and SD.DATETO))
            and ((Q_ANTIRELEASE is Null) or
                 (TYPE_Q_ANTIRELEASE = 1 and AID.OUT_DATE >= Current_Date + Q_ANTIRELEASE) or
                 (TYPE_Q_ANTIRELEASE = 2 and AID.OUT_DATE >= Current_Date + (Q_ANTIRELEASE*7)))
            and ((Q_RELEASE is Null) or
                 (TYPE_Q_RELEASE = 1 and AID.OUT_DATE <= Current_Date + Q_RELEASE) or
                 (TYPE_Q_RELEASE = 2 and AID.OUT_DATE <= Current_Date + (Q_RELEASE*7)))
            and ((AOC.LESS_MORE_THAN = 1 and ACT.NUM_OBJECTS - ACT.NUM_LOCKED - ACT.NUM_BOOKINGS <= AOC.QUANTITY) or
                 (AOC.LESS_MORE_THAN = 2 and ACT.NUM_OBJECTS - ACT.NUM_LOCKED - ACT.NUM_BOOKINGS >= AOC.QUANTITY))
            and (AOL.WEEKEND = 0 or (AOL.WEEKEND = 1 and Position(Cast(Extract(WeekDay from AID.OUT_DATE-1)+1 as CHAR) in FX.WEEKEND_DAYS) <> 0)))
         group by OUT_DATE, INTERNALNO, WEEKEND, CATEGORYNO, SUBCATEGORYNO,
                  VIRTUALNO, APPLYON, REAL_ALLOTMENT_CLOSE, QUANTITY) Q_SEL
         where NUM_HITS = (Select Count(*) from AVAIL_ONLINE_CONDITIONS AOC2
                           where AOC2.INTERNALNO = Q_SEL.INTERNALNO)
         and Position('1' in Q_SEL.APPLYON) <> 0
      union
      Select OUT_DATE, INTERNALNO, WEEKEND,
             CATEGORYNO, SUBCATEGORYNO, VIRTUALNO,
             2 as APPLYON, REAL_ALLOTMENT_CLOSE, QUANTITY
      from
        (Select Count(*) as NUM_HITS, OUT_DATE, INTERNALNO, WEEKEND,
                CATEGORYNO, SUBCATEGORYNO, VIRTUALNO,
                APPLYON, REAL_ALLOTMENT_CLOSE, QUANTITY
         from
           (Select AID.OUT_DATE,
                   AOL.INTERNALNO, AOL.WEEKEND,
                   AOL.CATEGORYNO, AOL.SUBCATEGORYNO, Coalesce(AOL.VIRTUALNO, 0) as VIRTUALNO,
                   AOL.APPLYON, AOL.REAL_ALLOTMENT_CLOSE, AOL.QUANTITY
            from AVAIL_ONLINE AOL
            left join AUTO_INC_DATE('03-24-2012', 3) AID
              on 1 = 1
            left join SEASONS_DATES SD
              on SD.CODENAME = AOL.SEASONCODE
              and AID.OUT_DATE between SD.DATEFROM and SD.DATETO
            left join AVAIL_ONLINE_CONDITIONS AOC
              on AOC.INTERNALNO = AOL.INTERNALNO
            left join AVAIL_CALC_TEMP ACT
              on ACT.RANDOMNO    = 1
              and ACT.CATEGORYNO    = AOC.CATEGORYNO
              and ACT.SUBCATEGORYNO = Coalesce(AOC.SUBCATEGORYNO, 0)
              and ACT.INTV_AVAIL    = Coalesce(AOC.AVAILABILITYGRP, 0)
              and ACT.DATE_AVAIL    = AID.OUT_DATE
            left join FIXEDVALUES FX
              on FX.BUILDINGNO = 2
              and AID.OUT_DATE between FX.DATEFROM and FX.DATETO
            where AOL.BUILDINGNO  = 2
            and AOL.CATEGORYNO    = 1
            and ((AOL.DATEFROM   <= '03-26-2012'
                  and AOL.DATETO >= '03-24-2012')
                 or (AOL.SEASONCODE in
                     (Select Distinct(CODENAME) from SEASONS_DATES SD
                      where SD.DATEFROM <= '03-26-2012'
                      and SD.DATETO     >= '03-24-2012'
                      and SD.BUILDINGNO  = 2)))
            and ((AID.OUT_DATE between AOL.DATEFROM and AOL.DATETO) or
                 (AID.OUT_DATE between SD.DATEFROM and SD.DATETO))
            and ((Q_ANTIRELEASE is Null) or
                 (TYPE_Q_ANTIRELEASE = 1 and AID.OUT_DATE >= Current_Date + Q_ANTIRELEASE) or
                 (TYPE_Q_ANTIRELEASE = 2 and AID.OUT_DATE >= Current_Date + (Q_ANTIRELEASE*7)))
            and ((Q_RELEASE is Null) or
                 (TYPE_Q_RELEASE = 1 and AID.OUT_DATE <= Current_Date + Q_RELEASE) or
                 (TYPE_Q_RELEASE = 2 and AID.OUT_DATE <= Current_Date + (Q_RELEASE*7)))
            and ((AOC.LESS_MORE_THAN = 1 and ACT.NUM_OBJECTS - ACT.NUM_LOCKED - ACT.NUM_BOOKINGS <= AOC.QUANTITY) or
                 (AOC.LESS_MORE_THAN = 2 and ACT.NUM_OBJECTS - ACT.NUM_LOCKED - ACT.NUM_BOOKINGS >= AOC.QUANTITY))
            and (AOL.WEEKEND = 0 or (AOL.WEEKEND = 1 and Position(Cast(Extract(WeekDay from AID.OUT_DATE-1)+1 as CHAR) in FX.WEEKEND_DAYS) <> 0)))
         group by OUT_DATE, INTERNALNO, WEEKEND, CATEGORYNO, SUBCATEGORYNO,
                  VIRTUALNO, APPLYON, REAL_ALLOTMENT_CLOSE, QUANTITY) Q_SEL
         where NUM_HITS = (Select Count(*) from AVAIL_ONLINE_CONDITIONS AOC2
                           where AOC2.INTERNALNO = Q_SEL.INTERNALNO)
         and Position('2' in Q_SEL.APPLYON) <> 0)
   Group by OUT_DATE, CATEGORYNO, SUBCATEGORYNO, VIRTUALNO, APPLYON) Q_SELB
on Q_SELA.OUT_DATE       = Q_SELB.OUT_DATE
and Q_SELA.CATEGORYNO    = Q_SELB.CATEGORYNO
and Q_SELA.SUBCATEGORYNO = Q_SELB.SUBCATEGORYNO
and Q_SELA.VIRTUALNO     = Q_SELB.VIRTUALNO
and Q_SELA.APPLYON       = Q_SELB.APPLYON
and Q_SELA.WEEKEND       = Q_SELB.WEEKEND
where Q_SELA.OUT_DATE    = Q_SELB.OUT_DATE
and Q_SELA.CATEGORYNO    = Q_SELB.CATEGORYNO
and Q_SELA.SUBCATEGORYNO = Q_SELB.SUBCATEGORYNO
and Q_SELA.VIRTUALNO     = Q_SELB.VIRTUALNO
and Q_SELA.APPLYON       = Q_SELB.APPLYON
and Q_SELA.WEEKEND       = Q_SELB.WEEKEND

__________________
Piensa siempre en positivo !
Responder Con Cita