将日期显示为空白的Oracle sql

将日期显示为空白的Oracle sql,sql,oracle,oracle11g,Sql,Oracle,Oracle11g,我不熟悉oracle sql,这是我编写的查询 SELECT dt, CASE b.colorcode WHEN '#fff9c4' THEN 'COVID +ve' WHEN '#ffcdd2' THEN 'COVID Suspect' ELSE 'Normal' END "Ward Type", b.code &qu

我不熟悉oracle sql,这是我编写的查询

    SELECT dt,
         CASE b.colorcode
            WHEN '#fff9c4' THEN 'COVID +ve'
            WHEN '#ffcdd2' THEN 'COVID Suspect'
            ELSE 'Normal'
         END
            "Ward Type",
         b.code "Ward CD",
         b.name "Ward Name",
         b.cnt "Total Patients",
         NVL (a.cnt, 0) "Total Updates Yesterday"
    FROM (  SELECT TRUNC (wih.whi_doctor_dt) dt,
                   NVL (wat.wat_curr_ward_cd, wat.wat_ward_cd) ward,
                   COUNT (*) cnt
              FROM tmh.w_ip_healthinfo wih,
                   tmh.a_doctor_master_base doc,
                   tmh.w_admission_txn wat
             WHERE     wih.whi_doctor_id = doc.adm_doctor_id
                   AND wih.whi_ip_num = wat.wat_ip_num
                   AND TRUNC (wih.whi_doctor_dt) = TRUNC (SYSDATE - 13) --between to_date('20200831000000','YYYYMMDDHH24MISS') and to_date('20200831235959','YYYYMMDDHH24MISS')
          GROUP BY TRUNC (wih.whi_doctor_dt),
                   NVL (wat.wat_curr_ward_cd, wat.wat_ward_cd)
          ORDER BY NVL (wat.wat_curr_ward_cd, wat.wat_ward_cd)) a
         RIGHT OUTER JOIN
         (  SELECT wardmst.wwm_ward_cd code,
                   wardmst.wwm_ward_desc name,
                   wardmst.wwm_wtype_wgrp_mapid,
                   wardmst.wwm_ward_sequence,
                   cvm1.cvm_value AS wardtype,
                   NVL (
                      (SELECT cvcolor.cvm_value
                         FROM tmh.t_objectmap ob
                              JOIN tmh.t_codevaluemaster CV
                                 ON ob.obm_containerid = CV.cvm_id
                              JOIN tmh.t_codevaluemaster cvcolor
                                 ON cvcolor.cvm_id = ob.obm_containeeid
                        WHERE     ob.obm_mappingtype = 350 --mapping of #color and ward / cabin
                              AND CV.cvm_value = wardmst.wwm_ward_cd
                              AND ob.obm_activeflag = 'Y'
                              AND ROWNUM = 1),
                      '#FFFFFF')
                      AS colorcode,
                   COUNT (*) cnt
              FROM tmh.w_bed_master_base bedmst
                   INNER JOIN tmh.w_ward_master_base wardmst
                      ON wardmst.wwm_ward_cd = bedmst.wbm_ward_cd
                   INNER JOIN tmh.t_objectmap om
                      ON om.obm_id = wardmst.wwm_wtype_wgrp_mapid
                   INNER JOIN tmh.t_codevaluemaster cvm
                      ON     cvm.cvm_id = om.obm_containerid
                         AND cvm.cvm_codetypeid = om.obm_containertype
                   INNER JOIN tmh.t_codevaluemaster cvm1
                      ON     cvm1.cvm_id = om.obm_containeeid
                         AND cvm1.cvm_codetypeid = om.obm_containeetype
                   INNER JOIN tmh.s_strmr_apprve appr
                      ON     appr.s_strmr_appid = bedmst.wbm_ward_cd
                         AND appr.s_strmr_typcd = 'WRD'
                         AND appr.s_strmr_enddt IS NULL
             WHERE     wardmst.wwm_active_flag = 'Y'
                   AND wardmst.wwm_wtype_wgrp_mapid <> 0
                   AND bedmst.wbm_bed_status = NVL ('O', bedmst.wbm_bed_status)
          /*and bedMst.WBM_BED_STATUS = NVL(:BedStatus, bedMst.WBM_BED_STATUS)
          and wardMst.WWM_WARD_CD = NVL(:WardCode, wardMst.WWM_WARD_CD)*/
          GROUP BY wardmst.wwm_ward_cd,
                   wardmst.wwm_ward_desc,
                   wardmst.wwm_wtype_wgrp_mapid,
                   wardmst.wwm_ward_sequence,
                   cvm1.cvm_value
          ORDER BY wardmst.wwm_wtype_wgrp_mapid, wardmst.wwm_ward_sequence) b
            ON b.code = a.ward
ORDER BY b.wwm_wtype_wgrp_mapid, b.wwm_ward_sequence
问题是日期在某些地方显示为空白,这是一个问题,因为日期中的值不是由tableau选择的

如你所见,日期应该在空白处。这些空白的原因是什么


空格在tableau中引起了一个问题,因为这些空格没有提取日期

右外连接只是向后写入的左外连接。我的建议是避免使用它们,并将所有外部联接写为左联接

此外,内部和外部关键字也不是严格要求的。有些人觉得它们让事情变得更清楚,而另一些人则认为它们是多余的杂乱。我在少即是多的阵营,但这取决于你

挑选* 来自wxyz 右键联接abcd上的abcd.id=wxyz.id 可以更清楚地重写为

挑选* 来自abcd 在wxyz.id=abcd.id上右键连接wxyz 将其应用到您的查询中可以得到:

选择a.dt ,案例b.色码 当'fff9c4'时,则为'COVID+ve' 当“ffcdd2”时,则为“疑似新冠病毒” 否则“正常” 末端病房式 ,b.代码病房CD ,b.姓名病房名称 ,b.cnt患者总数 ,nvla.cnt,昨天共更新0次 从中选择wardmst.wwm_ward_cd代码 ,wardmst.wwm_ward_desc name ,wardmst.wwm_wtype_wgrp_mapid ,wardmst.wwm_ward_序列 ,cvm1.cvm_值作为类型 ,nvlselect cvcolor.cvm_值 从tmh.t_objectmap ob 在ob.obm\u containerid=cv.cvm\u id上加入tmh.t\u codevaluemaster cv 在cvcolor.cvm_id=ob.obm_containeeid上加入tmh.t_codevaluemaster cvcolor 其中ob.obm_mappingtype=350-颜色和病房/客舱的映射 和cv.cvm_value=wardmst.wwm_ward_cd 和ob.obm_activeflag='Y' 并且rownum=1,“FFFFFF”作为颜色代码 ,count*cnt 来自tmh.w_bed_master_base bedmst 在wardmst.wwm_ward_cd=bedmst.wbm_ward_cd上加入tmh.w_ward_master_base wardmst 在om.obm_id=wardmst.wwm_wtype_wgrp_mapid上加入tmh.t_objectmap om 在cvm.cvm_id=om.obm_containerid和cvm.cvm_codetypeid=om.obm_containertype上加入tmh.t_codevaluemaster cvm 在cvm1.cvm_id=om.obm_containeeid和cvm1.cvm_codetypeid=om.obm_containeetype上加入tmh.t_codevaluemaster cvm1 在appr.s\u strmr\u appid=bedmst.wbm\u ward\u cd上加入tmh.s\u strmr\u apprve appr 其中wardmst.wwm_活动_标志='Y' 和wardmst.wwm_wtype_wgrp_mapid 0 和近似s_strmr_typcd='WRD' 并且appr.s_strmr_enddt为空 和bedmst.wbm_bed_status=nvl'O',bedmst.wbm_bed_status 分组 wardmst.wwm_ward_cd ,wardmst.wwm_ward_desc ,wardmst.wwm_wtype_wgrp_mapid ,wardmst.wwm_ward_序列 ,cvm1.cvm_值b 左连接 选择truncwih.whi_doctor_dt ,nvlwat.wat\u curr\u ward\u cd,wat.wat\u ward\u cd ward ,count*cnt 来自tmh.w_ip_healthinfo和 在doc.adm\u doctor\u id=wih.whi\u doctor\u id上加入tmh.a\u doctor\u master\u base doc 加入tmh.w_准入_txn wat on wat.wat_ip_num=wih.whi_ip_num 其中truncwih.whi_doctor_dt=truncsysdate-13 由truncwih.whi_医生、nvlwat.wat_curr_ward_cd、wat.wat_ward_cd a组成的小组 关于a.ward=b.code 按b.wwm\U类型wgrp\U mapid、b.wwm\U ward\U顺序排序 我认为这使得b是驱动程序,a是外部连接集这一点更加清楚,这解释了为什么a前缀列可以为null。也许你也可以切换a和b标签,这样驱动装置的标签就是a

顺便说一下

nvl'O',bedmst.wbm_bed_状态 应该是

nvlbedmst.wbm_床_状态,'O'
在b查询中,没有dt列。 您使用右外部联接联接查询a和b。因此,对于a-dt列中没有匹配记录的来自b的记录,则为null。 解决方案取决于您需要什么:

如果有dt列,请将其添加到b查询 或 将右外部联接更改为等联接 或者两者都有
可能是因为whi_doctor_dt为空。我猜如果你做一个内部连接而不是正确的外部连接,你不会看到那些记录出现。嗨,威廉,谢谢你给出了详细的答案,但问题仍然存在。我仍然在日期字段中得到空白w_ip_healthinfo.whi_doctor_dt曾经为空?否则,b集中必须有代码,而a集中则没有相应的病房。您可以尝试分别运行这两个查询以检查缺少的内容。