select count(*),sum(yjje) from app_jhpz where gs_jbrq like '2007-01%' group by j_dwmc;现在数据库中的j_dwmc字段有两类的值,一类为测井,一类为钻井,所以,查询出来的是两行数据:
  COUNT(*)  SUM(YJJE)
---------- ----------
         2         64
         1         20但是这两行数据没有顺序,也就是说,我不知道哪行是测井的哪行是钻井的,而且,数据库中的j_dwmc字段只能有8种固定的值,我要求:按我规定的j_dwmc值的顺序来排列分组后的结果,如果j_dwmc中只有5种值,那么,其它的三种也要按顺序排列出来,只不过要用0来填充。
如何实现?谢谢大家!

解决方案 »

  1.   

    trySelect
    A.j_dwmc,
    IsNull(B.countj_dwmc, 0) As countj_dwmc,
    IsNull(B.sumyjje, 0) As sumyjje
    From
    A
    Left Join
    (select j_dwmc, count(*) As countj_dwmc, sum(yjje) As sumyjje from app_jhpz where gs_jbrq like '2007-01%' group by j_dwmc) B
    On A.j_dwmc = B.j_dwmc
      

  2.   

    加上排序Select
    A.j_dwmc,
    IsNull(B.countj_dwmc, 0) As countj_dwmc,
    IsNull(B.sumyjje, 0) As sumyjje
    From
    A
    Left Join
    (select j_dwmc, count(*) As countj_dwmc, sum(yjje) As sumyjje from app_jhpz where gs_jbrq like '2007-01%' group by j_dwmc) B
    On A.j_dwmc = B.j_dwmc
    Order By A.j_dwmc
      

  3.   

    有問題,修改下Select
    Distinct 
    A.j_dwmc,
    IsNull(B.countj_dwmc, 0) As countj_dwmc,
    IsNull(B.sumyjje, 0) As sumyjje
    From
    A
    Left Join
    (select j_dwmc, count(*) As countj_dwmc, sum(yjje) As sumyjje from app_jhpz where gs_jbrq like '2007-01%' group by j_dwmc) B
    On A.j_dwmc = B.j_dwmc
    Order By A.j_dwmc
      

  4.   

    弱弱的问一句:B.countj_dwmc指的是什么?
      

  5.   

    select isnull(b.行数,0),isnull(b.总数,0) from 
    (select 1 orderno,'第一种值' Name union select 2,'第一种值' union select 3,'第一种值')a left join 
    (select j_dwmc,count(*)行数,sum(yjje)总数 from app_jhpz where gs_jbrq like '2007-01%' group by j_dwmc)b
    on b.j_dwmc=a.Name order by a.orderno
      

  6.   

    A.j_dwmc,
    IsNull(B.countj_dwmc, 0) As countj_dwmc,
    IsNull(B.sumyjje, 0) As sumyjje我不明白上面的A,B.countj_dwmc,分别指的是什么?
    非常感谢!
      

  7.   

    bihuixin1111() ( ) 信誉:100    Blog   加为好友  2007-07-10 16:01:24  得分: 0  
     
     
       弱弱的问一句:B.countj_dwmc指的是什么?
      
     
    -----------
    count(*) As countj_dwmc, sum(yjje) As sumyjje
      

  8.   

    wgzaaa():“b.行数”指的是什么呢?
      

  9.   

    bihuixin1111() ( ) 信誉:100    Blog   加为好友  2007-07-10 16:04:33  得分: 0  
     
     
        A.j_dwmc,
    IsNull(B.countj_dwmc, 0) As countj_dwmc,
    IsNull(B.sumyjje, 0) As sumyjje我不明白上面的A,B.countj_dwmc,分别指的是什么?
    非常感谢!
      
     
    ---------------------
    count(*) As countj_dwmc, sum(yjje) As sumyjjecountj_dwmc是count(*)的別名sumyjje是sum(yjje) 的別名
      

  10.   

    count(*)行数--取列名了    )b---数据集的别名是b 所以b.行数 就是count(*)
      

  11.   

    鱼兄 太简化了我的好象能执行的
    create table app_jhpz(yjje int,j_dwmc varchar(10),gs_jbrq varchar(10))
    -----------------------
    0 0
    0 0
    0 0
      

  12.   


    create table app_jhpz(yjje int,j_dwmc varchar(10),gs_jbrq varchar(10)) drop table app_jhpz
    insert app_jhpz select 100,'第一种值','2007-01-02'
    insert app_jhpz select 200,'第一种值','2007-01-03'
    insert app_jhpz select 300,'第二种值','2007-01-04'
    insert app_jhpz select 400,'第三种值','2007-01-05'
    insert app_jhpz select 500,'第二种值','2007-01-06'
    insert app_jhpz select 600,'第三种值','2007-01-07'
    insert app_jhpz select 700,'第一种值','2007-01-08'
    insert app_jhpz select 800,'第二种值','2007-01-08'
    insert app_jhpz select 900,'第三种值','2007-02-02'
    insert app_jhpz select 1000,'第一种值','2007-02-02'
    ----------------------------
    select isnull(b.行数,0),isnull(b.总数,0) from 
    (select 1 orderno,'第一种值' Name union select 2,'第二种值' union select 3,'第三种值')a left join 
    (select j_dwmc,count(*)行数,sum(yjje)总数 from app_jhpz where gs_jbrq like '2007-01%' group by j_dwmc)b
    on b.j_dwmc=a.Name order by a.orderno
    -----------------------
    3 1000
    3 1600
    2 1000
      

  13.   

    Select
    Distinct 
    A.j_dwmc,
    IsNull(B.countj_dwmc, 0) As countj_dwmc,
    IsNull(B.sumyjje, 0) As sumyjje
    From
    A
    Left Join
    (select j_dwmc, count(*) As countj_dwmc, sum(yjje) As sumyjje from app_jhpz where gs_jbrq like '2007-01%' group by j_dwmc) B
    On A.j_dwmc = B.j_dwmc
    Order By A.j_dwmc
    -------------
    這個語句執行有什麼問題?
      

  14.   

    回楼上,问题是:ERROR at line 7:
    ORA-00942: table or view does not exist对了,忘了告诉大家,我用的是ORACLE数据库,我习惯了来sql server
      

  15.   

    回楼上,问题是:ERROR at line 7:
    ORA-00942: table or view does not exist对了,忘了告诉大家,我用的是ORACLE数据库,我习惯了来sql server
    ----------------
    ORACLE在ORACLE版應該可以得到答案的,MS SQL和ORACLE的寫法上還是有些區別。我不知道我寫的這個語句在ORACLE中是否可以使用,但是在MS SQL中沒有問題的。另外,看錯誤提示,提示是“表或者視圖不存在”,檢查下那個語句中的表名和你的實際表名是否一致。
      

  16.   

    提示的错误指的就是:
    Select
    Distinct 
    A.j_dwmc,
    IsNull(B.countj_dwmc, 0) As countj_dwmc,
    IsNull(B.sumyjje, 0) As sumyjje
    From
    A
    Left Join中的别名A不存在
      

  17.   

    不好意思,修改下。Select
    Distinct 
    A.j_dwmc,
    IsNull(B.countj_dwmc, 0) As countj_dwmc,
    IsNull(B.sumyjje, 0) As sumyjje
    From
    app_jhpz A
    Left Join
    (select j_dwmc, count(*) As countj_dwmc, sum(yjje) As sumyjje from app_jhpz where gs_jbrq like '2007-01%' group by j_dwmc) B
    On A.j_dwmc = B.j_dwmc
    Order By A.j_dwmc
      

  18.   

    楼上可别客气,应该是我非常感谢!
    Select
    Distinct 
    A.j_dwmc,
    IsNull(B.countj_dwmc, 0) As countj_dwmc,
    IsNull(B.sumyjje, 0) As sumyjje这句话提示: "ISNULL": invalid identifier
      

  19.   

    ORACLE中沒有ISNULL函數,改用NVL函數實現
    trySelect
    Distinct 
    A.j_dwmc,
    NVL(B.countj_dwmc, 0) As countj_dwmc,
    NVL(B.sumyjje, 0) As sumyjje
    From
    app_jhpz A
    Left Join
    (select j_dwmc, count(*) As countj_dwmc, sum(yjje) As sumyjje from app_jhpz where gs_jbrq like '2007-01%' group by j_dwmc) B
    On A.j_dwmc = B.j_dwmc
    Order By A.j_dwmc