在assetmanage_draw表中有如下主要字段 n_id(序列号) c_name(用品名称),c_branchname(领用部门),c_namediffer(用品编号),c_manageid(领用单编号)以及其他字段,由于一次申请可以领用多个物品,因此一个领用单编号可能对应多条记录,现在用group by 可以对记录进行分组,现在我想一个领用单编号只显示一条记录(把一个领用单下具有共性的信息如c_branchname),而不是把所有记录都分组显示该怎么做。我现在的SQL语句是这样写的
strSQL="select  n_id,c_name,n_amount,c_usebranch,d_drawtime,c_manageid,count(c_manageid) as cnt from assetmanage_draw group by n_id, c_name,n_amount,c_usebranch,d_drawtime,c_manageid order by n_id asc";我只想显示这一组中共同的东西如申请部门名称、申请单等
而这个部门申请了哪些用品先不显示,我现在是一申请单号分组,如果一个申请单好下有三个物品则显示如下
c_manageid   c_name         c_usebranch
1             钢笔          办公室
1             原珠笔        办公室
1             铅笔          办公室
2             A3复印纸      纪律检查委员会
2             A4复印纸      纪律检查委员会
。。我现在想这样显示
c_manageid   c_name         c_usebranch
1                           办公室
             钢笔
             圆珠笔
             铅笔2                    纪律检查委员会
             A3复印纸
             A4复印纸
  

解决方案 »

  1.   

    没太看懂您的意思,不过根据“一个领用单编号只显示一条记录”,那就得按领用单编号group by,其他的列该sum的就sum,该max的就max等等,我猜是你gorup by的列太多了吧
      

  2.   

    SELECT decode(nid - min_nid, 0, c_manageid, null),
    decode(nid - min_nid, 0, c_branchname, null),
    c_namediffer
    FROM assetmanage_draw a, ( SELECT min(c_nid) min_nid, c_manageid FROM assetmanage_draw GROUP BY c_manageid) m
    WHERE a.c_manageid = m.c_manageid
    ORDER BY a.c_manageid , a.nid;