使用decode产生的问题

在进行 行变列的过程中,使用了decode(条件,值,返回值)函数,我所查的from表的有timestamp字段 可是我查询后发现,在涉及到昨天24点到今天凌晨的几个数据是空白,如下所示
   产品ID                    开始时间                      结束时间                                   过程数据1         过程数据2  
8203123225    2008-7-25 20:15:21      2008-7-25 23:15:21            T1                     W1
8203123226    2008-7-25 20:15:21      2008-7-25 23:15:21            T2                     W2
8203123227              空白                          2008-7-26 01:15:21                 空白                 W3



我怀疑这个数据在数据库确实没有,我另作单个查询并不是这样的。8203123227产品开始时间是2008-7-25 23:55:25 过程数据1 对应的是数据是 T3
我不明白这是为什么。不知道大家遇到过这种情况没有 ,希望各位高人施以援手

[ 本帖最后由 chinahuangmin 于 2008-7-30 15:20 编辑 ]
我也来说两句 查看全部回复

最新回复

  • chinahuangmin (2008-7-30 15:49:31)

    在线等待
  • yzsind (2008-7-30 18:22:24)

    看不懂。
  • geek (2008-7-31 14:44:45)

    不是很了解的
  • moonboat1120 (2008-7-31 15:05:15)

    楼主应该贴出sql,这样说感觉有点模糊!
  • chinahuangmin (2008-8-01 08:08:53)

    阿 中午我把传上来

    [ 本帖最后由 chinahuangmin 于 2008-8-1 11:13 编辑 ]

    grade curve.sql
    (2008-08-01 11:13:20, Size: 1.59 KB, Downloads: 8)

    piece curve.XLS
    (2008-08-01 11:13:20, Size: 128 KB, Downloads: 5)

  • Bluecate (2008-8-01 14:03:14)

    你的DECODE都缺少参数,比如说 decode(dlog_hist.sect, 1,dlog_hist.avg_temp),意思是当dlog_hist.sect = 1时取dlog_hist.avg_temp值,如果dlog_hist.sect = 1之外的任何值,则取什么值? 你没有给出,默认就是NULL。

    [ 本帖最后由 Bluecate 于 2008-8-1 14:04 编辑 ]
  • chinahuangmin (2008-8-01 14:10:56)

    不是吧,
    为什么大多数结果出来了呢 只有个别的数据没有出来呢
  • Bluecate (2008-8-01 14:42:05)

    那就大多数的数据正好满足了第一种条件。可以做个测试,SQL修改如下:

    SELECT dlog_hist.pce_id
          ,MIN(decode(dlog_hist.snap_nb, 1, dlog_hist.TIMESTAMP,'XXX')) AS chgtime
          ,MAX(decode(dlog_hist.snap_nb, 21, dlog_hist.TIMESTAMP,'XXX')) AS dicgtime
          ,AVG(decode(dlog_hist.sect, 1, dlog_hist.avg_temp,'XXX')) AS pce_avg_1
          ,AVG(decode(dlog_hist.sect, 2, dlog_hist.avg_temp,'XXX')) AS pce_avg_2
          ,AVG(decode(dlog_hist.sect, 3, dlog_hist.avg_temp,'XXX')) AS pce_avg_3
          ,AVG(decode(dlog_hist.sect, 4, dlog_hist.avg_temp,'XXX')) AS pce_avg_4
          ,AVG(decode(dlog_hist.sect, 5, dlog_hist.avg_temp,'XXX')) AS pce_avg_5
          ,AVG(decode(dlog_hist.sect, 1, dlog_hist.fce_temp_btm,'XXX')) AS fce_btm_1
          ,AVG(decode(dlog_hist.sect, 1, dlog_hist.fce_temp_top,'XXX')) AS fce_btm_1
          ,AVG(decode(dlog_hist.sect, 2, dlog_hist.fce_temp_btm,'XXX')) AS fce_btm_2
          ,AVG(decode(dlog_hist.sect, 2, dlog_hist.fce_temp_top,'XXX')) AS fce_btm_2
          ,AVG(decode(dlog_hist.sect, 3, dlog_hist.fce_temp_btm,'XXX')) AS fce_btm_3
          ,AVG(decode(dlog_hist.sect, 3, dlog_hist.fce_temp_top,'XXX')) AS fce_btm_3
          ,AVG(decode(dlog_hist.sect, 4, dlog_hist.fce_temp_btm,'XXX')) AS fce_btm_4
          ,AVG(decode(dlog_hist.sect, 4, dlog_hist.fce_temp_top,'XXX')) AS fce_btm_4
          ,AVG(decode(dlog_hist.sect, 5, dlog_hist.fce_temp_btm,'XXX')) AS fce_btm_5
          ,AVG(decode(dlog_hist.sect, 5, dlog_hist.fce_temp_top,'XXX')) AS fce_btm_5

      FROM dlog_hist
    WHERE TIMESTAMP >= to_date('27-jul-2008 00:00:00', 'dd-mon-yyyy hh24:mi:ss')
       AND TIMESTAMP <= to_date('29-jul-2008 00:00:00', 'dd-mon-yyyy hh24:mi:ss')
    --AND DLOG_PDI.pce_id =DLOG_HIST.pce_id
    --AND DLOG_PDI.rec_nb =DLOG_HIST.rec_nb
    --AND DLOG_PDI.grade ='MBRYT34503'
    GROUP BY dlog_hist.pce_id

    [ 本帖最后由 Bluecate 于 2008-8-1 14:44 编辑 ]
  • chinahuangmin (2008-8-01 15:40:02)

    笨死了! 我有时间限制条件 到现在才发现

    [ 本帖最后由 chinahuangmin 于 2008-8-1 15:54 编辑 ]
  • boni83 (2008-8-03 15:31:43)

    不错不错,顶。  Air Jordans