表结构:id    A1    name1    A2    name2    rq
        1    100   n1       240   m1       20080501
        2    110   n1       200   m1       20080502
        3    120   n1       220   m1       20080503
        4    150   n1       250   m1       20080504   
        5    130   n1       255   m1       20080505我想实现的查询结果是:
        
        日期                A1    NAME1   A2    NAME2   
        01              100    n1     140    m1       
        02              110    n1     100    m1       
        03              125    n1     105    m1       
        04              150    n1     110    m1       
        05              130    n1     155    m1      
    >120个数(n1,m1)     3     n1      2     m1我是在存储过程中实现此功能,用union连表的方法,但是最后一行就不会写了。
试着用了子查询,但oracle中可能是我用的不对,查不不来。
上面只是个例子,请哪位大侠帮帮忙给写段SQL语句解决一下。
小弟先谢谢了!

解决方案 »

  1.   

    a1,a2啥关系啊
     03              125    n1    105    m1      怎么出来的
      

  2.   

    第一列是日期时间啊,相当与1日2日……
    A1 是数据,NAME1是这条数据对应的名称
    A2,NAME2同上。
    最后一行是要做计算的,当NAME1或NAME2=n1,n2时数据大与120的个数。
    这个是我举的例子。实际的项要比这多很多。
    最后是要出一个月报报表。显示这个月的每条数据。
    最后显示的是计算的那行。
      

  3.   

    不好意思了从新说一下
    表结构:id    A1    name1    A2    name2    rq 
            1    100  n1      140  m1      20080501 
            2    110  n1      100  m1      20080502 
            3    125  n1      105  m1      20080503 
            4    150  n1      110  m1      20080504  
            5    130  n1      155  m1      20080505 我想实现的查询结果是: 
            
            日期                A1    NAME1  A2    NAME2  
            01              100    n1    140    m1      
            02              110    n1    100    m1      
            03              125    n1    105    m1      
            04              150    n1    110    m1      
            05              130    n1    155    m1      
        >120个数(n1,m1)      3     n1     2     m1 NAME1和NAME2记录的是数据名称例如一种矿石的名称:n1,m1……
    比如第一行:就是:1日的n1矿为100,m1矿为140
    最后一行显示当矿石名称为n1时,对应的数据大于120的个数,和矿石名称为n2时,对应的数据大于120的个数。
    这样说明白些没?
      

  4.   

    上边那5条应该很好写,日期那个to_char下就行汇总那个
    SUM(CASE WHEN A1>120 THEN 1 ELSE 0 END),SUM(CASE WHEN A2>120 THEN 1 ELSE 0 END)就可以了
      

  5.   

    如果不用对日期分组的话这么写最上面的五条:select to_char(to_date(rq, 'yyyy-mm-dd'), 'dd'), A1, NAME1, A2, NAME2
      FROM 表这样上面五条就能出来了至于汇总那条用8楼的就对了
      

  6.   

    SQL> select * from t7
      2  ;        ID         A1 NAME1              A2 NAME2      RQ
    ---------- ---------- ---------- ---------- ---------- --------------
             1        100 n1                240 m1         01-5月 -08
             2        110 n1                200 m1         02-5月 -08
             3        120 n1                220 m1         03-5月 -08
             4        150 n1                250 m1         04-5月 -08
             4        130 n1                255 m1         05-5月 -08SQL> select to_char(RQ,'dd') 日期,A1,name1,A2,name2 from t7
      2  union
      3  select '>120个数(n1,m1)' 日期,(select count(*) from t7 where a1>120) A1,
      4  'n1' name1 ,(select count(*) from t7 where a2>120) A2,'m1' name2 from dual;
    日期                    A1 NAME1              A2 NAME2
    --------------- ---------- ---------- ---------- ----------
    01                     100 n1                240 m1
    02                     110 n1                200 m1
    03                     120 n1                220 m1
    04                     150 n1                250 m1
    05                     130 n1                255 m1
    >120个数(n1,m1)          2 n1                  5 m1已选择6行。