列出日期之间的月份并跨列显示

时间:2014-10-21 12:09:51

标签: sql oracle11g

我有一个非常简单的脚本,显示3个组件目录号及其新发布日期......

        SELECT nrb.p_catnr,
               (
                   select min(selection_relse_date) 
                     from BDS_SELECTION_ORG@sid_to_cdsuk st 
                    where substr(selection_no, 2, 99) = pd.catnr
               ) NR_DATE
          FROM part_description pd 
    INNER JOIN inventory_purchase ip 
            ON ip.part_no = pd.part_no 
    INNER JOIN scm_prodtyp pt 
            ON pt.prodtyp = pd.prodtyp 
    INNER JOIN oes_fod_match acp 
            ON acp.part_no = pd.part_no 
    INNER JOIN NCF_COMPPART ncf 
            ON ncf.item_part_no = pd.part_no 
    INNER JOIN oes_nrbom nrb 
            ON ncf.catnr = nrb.c_catnr 
           AND ncf.prodtyp = nrb.c_prodtyp 
           AND ncf.packtyp = nrb.c_packtyp 
           AND ncf.vernr = nrb.c_vernr 
         WHERE pd.cunr in ('649830', 'W30000') 
           AND pd.catnr = '2EDVD0017' 
           AND pd.fod_idc = 'Y' 
           AND pt.prodgrp = 'AW'

结果如下......

enter image description here

我想添加的是每个月和每月的列表。从NR_DATE到当前日期的年份(MON-YYYY)但是,我想在水平上添加它,即

enter image description here

然后我想添加以下脚本......

(select nvl(sum(dp.del_qty),0) 
   from bds_dhead@sid_to_cdsuk dh, 
        bds_dline@sid_to_cdsuk dp 
  where dp.dhead_no = dh.dhead_no 
    and dh.d_status = '9' 
    and dp.article_no = '9'||nrb.p_catnr 
    and to_char(dh.actshpdate,'MON-YYYY') = --'list of months' 

并在正确的列/行中绘制总和。

这可能吗?

由于

1 个答案:

答案 0 :(得分:0)

您不会将SQL用于此类任务。 SQL在数据级别上运行,但您希望在表示级别上执行操作。

因此,您设计SQL,将结果集作为行返回,然后使用您喜欢的报告工具,从数据中创建数据透视表。您可以使用Eclipse BIRT,Crystal Reports甚至excel来执行此类操作。

修改

当然,一些RDBMS也支持其SQL语言中的数据透视表。但是有充分的理由将数据和表示层分开。