当前位置: 代码迷 >> DB2 >> DB2 SQL
  详细解决方案

DB2 SQL

热度:2867   发布时间:2013-02-26 00:00:00.0
DB2 SQL 求助
由于没有使用过DB2以及对SQL不够精通向大家求助!
表结构:
CREATE   VIEW   DB2ADMIN.SVCHN
  ( "SSYSID ",
    "SYEAR ",
    "SMONTH ",
    "SDAYOFWEEK ",
    "SDATE ",
    "STIME ",
    "SWEEK ",
    "SFDAY ",
    "SINTERVAL ",
    "SCHID ",
    "SCHTYPE ",
    "SCHANSTATE ",
    "SCHUTLP ",
    "SCHUTTOT ",
    "SCHUTBUS "
  )
    AS     SELECT   RLPARID,RTRIM(CHAR(YEAR(RSTART_DATE))),RTRIM   (CHAR(MONTH(RSTART_DATE)))
        ,DAYOFWEEK_ISO(RSTART_DATE),DATE(RSTART_DATE),TIME(RSTART_DATE),RTRIM(  
        CHAR   (WEEK_ISO(RSTART_DATE))),RTRIM(CHAR(DATE(RSTART_DATE)-(   DAYOFWEEK_ISO
        (   RSTART_DATE)-1)DAY)),   RINTERVAL,RCHAN_ID,   RCHAN_TYPE,RCHAN_STATE,
        RCHANLPU,   RCHANTOTU,RCHANBUSU
    FROM   MCHANNEL;

问题语句:
SDATE   BETWEEN   '2006-08-01 '   AND   '2006-09-30 '   AND    
((STIME   BETWEEN   '08:00:00 '   and   '18:00:00 ')   OR   (STIME   BETWEEN   '22:00:00 '   AND   '23:00:00 '))   UNION   ALL    
SELECT   CASE   -1   WHEN     8   THEN   1   WHEN   0   THEN   7   ELSE   SDAYOFWEEK   -1   END   SDAYOFWEEK,   DATE(SDATE   -1   DAYS)   SDATE,STIME,SSYSID,SCHID,SCHUTTOT   FROM
  DB2ADMIN.SVCHN   WHERE   SSYSID   IN   ( 'P101 ')     AND   SCHID   IN   ( '00 ', '01 ', '02 ', '03 ', '20 ', '21 ', '22 ', '23 ', '24 ', '25 ', '26 ', '27 ', '30 ', '31 ', '32 ', '33 ', '34 ', '35 ', '36 ', '37 ', '38 ', '39 ', '3A ', '3B ', '3C ', '3D ', '3E ', '3F ', '40 ', '41 ', '42 ', '43 ', '44 ', '45 ', '46 ', '50 ', '51 ', '80 ', '81 ', '82 ', '83 ', '84 ', '85 ', '86 ', '87 ', '88 ', '89 ', '8A ', '8B ', '8C ', '8D ', '8E ', '8F ', '90 ', '91 ', '92 ', '93 ', '94 ', '95 ', '96 ', '97 ', '98 ', '99 ', '9A ', '9B ', '9C ', '9D ', '9E ', '9F ', 'A0 ', 'A1 ', 'A2 ', 'A3 ')   AND  
  SDATE   BETWEEN   '2006-08-02 '     AND   '2006-10-01 '   AND     ((STIME   BETWEEN   '00:00:00 '   AND   '02:00:00 ')))   AS   TBL  
  GROUP   BY   SDATE,SMONTH,SSYSID,SCHID   ORDER   BY   SSYSID,SCHID,DATE,SMONTH;

目的实现按月查询!



------解决方案--------------------------------------------------------
group by 会自动按最小分组统计,所以你的最小分组的单位是 SDATE 去掉就可以了
------解决方案--------------------------------------------------------
GROUP BY SDATE,SMONTH,SSYSID,SCHID,DATE ORDER BY SSYSID,SCHID,DATE,SMONTH;
  相关解决方案