我现在有一个药品数据表。药品代码(md_no),药品名称(detail),有效到期日(end_date),在库数量(md_number)S01              2010-07-01          10
S01              2010-09-30          20
S02              2010-05-30          5
那我要查询出的数据就是S01 药品在库数量 30(10+20),S02药品在库数量 5.请问这个语句怎么写?select sum(t.md_number),med_no,detail from md_medicine t
where t.med_no='S01'它提示非分组函数,所以我再加group by med_no,detail,但也搜索不出S01药品30的数量。请问语句怎么写?在线等。

解决方案 »

  1.   

    --加分组GROUP BY 
    select sum(t.md_number),med_no,detail from md_medicine t
    where t.med_no='S01'
    group by med_no,detail
      

  2.   

    我不知道你的med_no,detail 中的DETAIL是什么样子的数据,如果同个类型的med_no的detail不一样的话啊
    那只能这样写
    select sum(t.md_number),med_no from md_medicine t
    where t.med_no='S01'
    group by med_no
      

  3.   

    其实呢,是这样的,
    我现在的语句是如下select rtrim(t.code) code,
           rtrim(t.detail) ||
           decode(sum(tt.md_number),
                  null,
                  '',
                  ',余' || sum(tt.md_number) || '(' || rtrim(tt.unity) || ')') detail
      from md_code t, md_medicine tt where ((rtrim(t.b_class) = 'STU') or
           ((rtrim(t.b_class) = 'MTU' or rtrim(t.b_class) = 'STU') and
           rtrim(t.code) = ltrim('STU')))
       and rtrim(t.code) = rtrim(tt.med_no(+))
       group by t.code,t.detail,tt.md_number,tt.unity其中,我的药品名字是从md_code这个表关连出的,在md_code表中b_class(大分类)为MTU和STU的是我要找的药,总之WHERE条件中写的就是找出我要的药品名称的过程。
    md_medicine表是存放药品代码和有效期,在库数量,单位等数据的。不知有没有表达明白。
    现在我用这个语句会搜索出,
    S01 药品A,余10(盒)
    S01 药品A,余17(盒)
    S02 药品B,余3(付)
    而我想要的是S01 药品A,余17(盒),
      

  4.   

    select sum(t.md_number)over(partition by t.med_no order by t.med_no) md_number,med_no,detail from md_medicine t
    where t.med_no='S01'
      

  5.   

    select rtrim(t.code) code,
      rtrim(t.detail) ||
      decode(sum(tt.md_number),
      null,
      '',
      ',余' || sum(tt.md_number) || '(' || rtrim(tt.unity) || ')') detail
      from md_code t, md_medicine tt where ((rtrim(t.b_class) = 'STU') or
      ((rtrim(t.b_class) = 'MTU' or rtrim(t.b_class) = 'STU') and
      rtrim(t.code) = ltrim('STU')))
      and rtrim(t.code) = rtrim(tt.med_no(+))
      group by t.code,t.detail,tt.md_number,tt.unity
    晕倒,你把红色的去掉,应该就可以了
      

  6.   

    select ta.code,
         rtrim(ta.detail) ||
           nvl(sum(ta.md_number),
               ',余' || sum(ta.md_number) || '(' || rtrim(ta.unity) || ')'
               )  as detail
    from
    (select rtrim(t.code) as code,
      rtrim(t.detail) as detail,
      sum(tt.md_number) as md_number,
      rtrim(tt.unity) as unity
      from md_code t, md_medicine tt
     where ((rtrim(t.b_class) = 'STU') or
      ((rtrim(t.b_class) = 'MTU' or rtrim(t.b_class) = 'STU') and
      rtrim(t.code) = ltrim('STU')))
      and rtrim(t.code) = rtrim(tt.med_no(+))
      group by t.code,t.detail,tt.md_number,tt.unity) as ta
    group by ta.code
      

  7.   

    select   rtrim(t.code)   as   code, 
        rtrim(t.detail)   as   detail, 
        sum(tt.md_number)   as   md_number, 
        rtrim(tt.unity)   as   unity 
        from   md_code   t,   md_medicine   tt 
      where   ((rtrim(t.b_class)   =   'STU ')   
              or ((rtrim(t.b_class)   =   'MTU '   
              or  rtrim(t.b_class)   =   'STU ')   and 
        rtrim(t.code)   =   ltrim( 'STU '))) 
        and   rtrim(t.code)   =   rtrim(tt.med_no(+)) 
        group   by   t.code,t.detail,tt.unity你说这个不行,我想知道这个得到什么结果?就上面这个语句...
      

  8.   

    http://topic.csdn.net/u/20100308/09/460d2b6e-4f38-4829-b82c-b818b729fa6d.html楼主先看下这个~提问的智慧不然一进帖子就是满眼的代码和文字。。理解很费力的
      

  9.   

    select rtrim(t.code) code,
      rtrim(t.detail) ||
      decode(sum(tt.unity),
      null,  '',
      ',余' || sum(tt.md_number) || '(' || rtrim(tt.unity) || ')') detail
      from md_code t, md_medicine tt where ( (rtrim(t.b_class) = 'STU') or
      ( (rtrim(t.b_class) = 'MTU' or rtrim(t.b_class) = 'STU') and rtrim(t.code) = ltrim('STU') )
      )
      and rtrim(t.code) = rtrim(tt.med_no(+))
      group by t.code,t.detail,tt.unity
      

  10.   

    http://topic.csdn.net/u/20100308/09/460d2b6e-4f38-4829-b82c-b818b729fa6d.html楼主先看下这个~提问的智慧不然一进帖子就是满眼的代码和文字。。理解很费力的
      

  11.   


      select sum(t.md_number),med_no,detail from md_medicine t
      group by med_no,detail
      having t.med_no='S01'
      

  12.   

    select sum(md_number),min(md_no),detail from md_medicine group by detail
      

  13.   

    select         md_no,
                   detail,
                   sum(md_number) md_number
              from emp_SanGuo
             group by rollup (md_no)
      

  14.   

    select md_no,sum(md_number) from tableName group by md_no