select 写你的字段
from
(
)a
group by wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj

解决方案 »

  1.   

    select group by wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj,sum().... from (
    select wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj ,sum(kcsw_rksl)-sum(kcsw_cksl) as sqjcsl ,sum(kcsw_rkdw)-sum(kcsw_rkdw) as sqjcdw, 0 as bqrksl,0 as bqrkdw,0 as bqcksl,0 as bqrkdw,0 as bqjcsl,0 as bqjcdw
    from kcsw ,wl where kcsw_wlid=wl_wlid and kcsw_jzrq <'20041219' group by wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj
    union all
    select wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj,0 as sqjcsl,0 as sqjcdw,sum(kcsw_rksl) as bqrksl,sum(kcsw_rkdw) as bqrkdw ,sum(kcsw_cksl) as bqcksl,sum(kcsw_ckdw) as bqckdw,0 as bqjcsl,0 as bqjcdw
     from  kcsw ,wl where kcsw_wlid=wl_wlid and kcsw_jzrq between '20041220' and '20041220' 
    group by wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj
    union all
    select wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj ,0 as sqjcsl,0 as sqjcdw,0 as bqrksl,0 as bqrkdw,0 as bqcksl,0 as bqckdw ,sum(kcsw_rksl)-sum(kcsw_cksl) as bqjcsl ,sum(kcsw_rkdw)-sum(kcsw_rkdw) as bqjcdw
    from kcsw ,wl where kcsw_wlid=wl_wlid and kcsw_jzrq <='20041220' group by wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj
    ) a group by group by wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj
      

  2.   

    select wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj from
    (
    select wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj from t1
    union all
    select wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj from t2
    )a
    group by wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj
      

  3.   

    select * from 
    (select wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj ,sum(kcsw_rksl)-sum(kcsw_cksl) as sqjcsl ,sum(kcsw_rkdw)-sum(kcsw_rkdw) as sqjcdw, 0 as bqrksl,0 as bqrkdw,0 as bqcksl,0 as bqrkdw,0 as bqjcsl,0 as bqjcdw
    from kcsw ,wl where kcsw_wlid=wl_wlid and kcsw_jzrq <'20041219' group by wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj) a
    union all
    select * from 
    (select wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj,0 as sqjcsl,0 as sqjcdw,sum(kcsw_rksl) as bqrksl,sum(kcsw_rkdw) as bqrkdw ,sum(kcsw_cksl) as bqcksl,sum(kcsw_ckdw) as bqckdw,0 as bqjcsl,0 as bqjcdw
     from  kcsw ,wl where kcsw_wlid=wl_wlid and kcsw_jzrq between '20041220' and '20041220' 
    group by wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj) b
    union all
    select * from 
    (select wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj ,0 as sqjcsl,0 as sqjcdw,0 as bqrksl,0 as bqrkdw,0 as bqcksl,0 as bqckdw ,sum(kcsw_rksl)-sum(kcsw_cksl) as bqjcsl ,sum(kcsw_rkdw)-sum(kcsw_rkdw) as bqjcdw
    from kcsw ,wl where kcsw_wlid=wl_wlid and kcsw_jzrq <='20041220' group by wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj) c
      

  4.   

    select * from 
    (select wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj ,sum(kcsw_rksl)-sum(kcsw_cksl) as sqjcsl ,sum(kcsw_rkdw)-sum(kcsw_rkdw) as sqjcdw, 0 as bqrksl,0 as bqrkdw,0 as bqcksl,0 as bqrkdw,0 as bqjcsl,0 as bqjcdw
    from kcsw ,wl where kcsw_wlid=wl_wlid and kcsw_jzrq <'20041219' group by wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj) a
    union all
    select * from 
    (select wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj,0 as sqjcsl,0 as sqjcdw,sum(kcsw_rksl) as bqrksl,sum(kcsw_rkdw) as bqrkdw ,sum(kcsw_cksl) as bqcksl,sum(kcsw_ckdw) as bqckdw,0 as bqjcsl,0 as bqjcdw
     from  kcsw ,wl where kcsw_wlid=wl_wlid and kcsw_jzrq between '20041220' and '20041220' 
    group by wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj) b
    union all
    select * from 
    (select wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj ,0 as sqjcsl,0 as sqjcdw,0 as bqrksl,0 as bqrkdw,0 as bqcksl,0 as bqckdw ,sum(kcsw_rksl)-sum(kcsw_cksl) as bqjcsl ,sum(kcsw_rkdw)-sum(kcsw_rkdw) as bqjcdw
    from kcsw ,wl where kcsw_wlid=wl_wlid and kcsw_jzrq <='20041220' group by wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj) c
      

  5.   

    select wl_wlid ,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj ,sqjcsl,sqjcdw,bqrksl,bqrkdw,bqcksl,bqckdw,bqjcsl,bqjcdw From 
    (select wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj ,sum(kcsw_rksl)-sum(kcsw_cksl) as sqjcsl ,sum(kcsw_rkdw)-sum(kcsw_rkdw) as sqjcdw, 0 as bqrksl,0 as bqrkdw,0 as bqcksl,0 as bqrkdw,0 as bqjcsl,0 as bqjcdw
    from kcsw ,wl where kcsw_wlid=wl_wlid and kcsw_jzrq <'20041219' group by wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj
    union all
    select wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj,0 as sqjcsl,0 as sqjcdw,sum(kcsw_rksl) as bqrksl,sum(kcsw_rkdw) as bqrkdw ,sum(kcsw_cksl) as bqcksl,sum(kcsw_ckdw) as bqckdw,0 as bqjcsl,0 as bqjcdw
     from  kcsw ,wl where kcsw_wlid=wl_wlid and kcsw_jzrq between '20041220' and '20041220' 
    group by wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj
    union all
    select wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj ,0 as sqjcsl,0 as sqjcdw,0 as bqrksl,0 as bqrkdw,0 as bqcksl,0 as bqckdw ,sum(kcsw_rksl)-sum(kcsw_cksl) as bqjcsl ,sum(kcsw_rkdw)-sum(kcsw_rkdw) as bqjcdw
    from kcsw ,wl where kcsw_wlid=wl_wlid and kcsw_jzrq <='20041220' group by wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj
    )A
    group by wl_wlid ,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj
    Server: Msg 8156, Level 16, State 1, Line 1
    The column 'bqrkdw' was specified multiple times for 'A'.
      

  6.   

    晕,没写全。
    跟楼上基本一致
    select wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj
    sum(..),max(..),..
    from
    (
      你原由的sql语句
    )a
    group by wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj
      

  7.   

    原来的语句应该是:
    select wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj ,sum(kcsw_rksl)-sum(kcsw_cksl) as sqjcsl ,sum(kcsw_rkdw)-sum(kcsw_rkdw) as sqjcdw, 0 as bqrksl,0 as bqrkdw,0 as bqcksl,0 as bqckdw,0 as bqjcsl,0 as bqjcdw
    from kcsw ,wl where kcsw_wlid=wl_wlid and kcsw_jzrq <'20041219' group by wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj
    union all
    select wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj,0 as sqjcsl,0 as sqjcdw,sum(kcsw_rksl) as bqrksl,sum(kcsw_rkdw) as bqrkdw ,sum(kcsw_cksl) as bqcksl,sum(kcsw_ckdw) as bqckdw,0 as bqjcsl,0 as bqjcdw
     from  kcsw ,wl where kcsw_wlid=wl_wlid and kcsw_jzrq between '20041220' and '20041220' 
    group by wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj
    union all
    select wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj ,0 as sqjcsl,0 as sqjcdw,0 as bqrksl,0 as bqrkdw,0 as bqcksl,0 as bqckdw ,sum(kcsw_rksl)-sum(kcsw_cksl) as bqjcsl ,sum(kcsw_rkdw)-sum(kcsw_rkdw) as bqjcdw
    from kcsw ,wl where kcsw_wlid=wl_wlid and kcsw_jzrq <='20041220' group by wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj
    写成:
    select wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj,sqjcsl,sqjcdw,bqrksl,bqrkdw,bqcksl,bqckdw,bqjcsl,bqjcdw from 
    (
    select wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj ,sum(kcsw_rksl)-sum(kcsw_cksl) as sqjcsl ,sum(kcsw_rkdw)-sum(kcsw_rkdw) as sqjcdw, 0 as bqrksl,0 as bqrkdw,0 as bqcksl,0 as bqckdw,0 as bqjcsl,0 as bqjcdw
    from kcsw ,wl where kcsw_wlid=wl_wlid and kcsw_jzrq <'20041219' group by wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj
    union all
    select wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj,0 as sqjcsl,0 as sqjcdw,sum(kcsw_rksl) as bqrksl,sum(kcsw_rkdw) as bqrkdw ,sum(kcsw_cksl) as bqcksl,sum(kcsw_ckdw) as bqckdw,0 as bqjcsl,0 as bqjcdw
     from  kcsw ,wl where kcsw_wlid=wl_wlid and kcsw_jzrq between '20041220' and '20041220' 
    group by wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj
    union all
    select wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj ,0 as sqjcsl,0 as sqjcdw,0 as bqrksl,0 as bqrkdw,0 as bqcksl,0 as bqckdw ,sum(kcsw_rksl)-sum(kcsw_cksl) as bqjcsl ,sum(kcsw_rkdw)-sum(kcsw_rkdw) as bqjcdw
    from kcsw ,wl where kcsw_wlid=wl_wlid and kcsw_jzrq <='20041220' group by wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj
    ) a 
     group by wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj
    Server: Msg 8120, Level 16, State 1, Line 1
    Column 'a.sqjcsl' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
    Server: Msg 8120, Level 16, State 1, Line 1
    Column 'a.sqjcdw' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
    Server: Msg 8120, Level 16, State 1, Line 1
    Column 'a.bqrksl' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
    Server: Msg 8120, Level 16, State 1, Line 1
    Column 'a.bqrkdw' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
    Server: Msg 8120, Level 16, State 1, Line 1
    Column 'a.bqcksl' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
    Server: Msg 8120, Level 16, State 1, Line 1
    Column 'a.bqckdw' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
    Server: Msg 8120, Level 16, State 1, Line 1
    Column 'a.bqjcsl' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
    Server: Msg 8120, Level 16, State 1, Line 1
    Column 'a.bqjcdw' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
      

  8.   

    Server: Msg 8156, Level 16, State 1, Line 1
    The column 'bqrkdw' was specified multiple times for 'A'.
    ===
    你这个字段出现多次吗?类似:
    create table tb1(a int,b varchar(2))
    insert into tb1
    select 10,'01' union all
    select 20, '01' union all
    select 30,'02'
    create table tb2 (a int,b varchar(2))
    insert into tb2
    select 40,'01' union all
    select 50, '02' union all
    select 60 ,'03'select a=sum(a),b from (
    select a,b from tb1
    union all
    select a,b from tb2)a
    group by b
    drop table tb1,tb2===
    a           b    
    ----------- ---- 
    70          01
    80          02
    60          03
      

  9.   

    我想楼主似乎没对group by 整明白。
    如楼上:
    wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj 进行分组,那么你select字段中除了这些字段外的其他字段必须要写在聚合函数中的。
      

  10.   

    第一次写错了,出现了两次
    正确的原文应该是:select wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj ,sum(kcsw_rksl)-sum(kcsw_cksl) as sqjcsl ,sum(kcsw_rkdw)-sum(kcsw_rkdw) as sqjcdw, 0 as bqrksl,0 as bqrkdw,0 as bqcksl,0 as bqckdw,0 as bqjcsl,0 as bqjcdw
    from kcsw ,wl where kcsw_wlid=wl_wlid and kcsw_jzrq <'20041219' group by wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj
    union all
    select wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj,0 as sqjcsl,0 as sqjcdw,sum(kcsw_rksl) as bqrksl,sum(kcsw_rkdw) as bqrkdw ,sum(kcsw_cksl) as bqcksl,sum(kcsw_ckdw) as bqckdw,0 as bqjcsl,0 as bqjcdw
     from  kcsw ,wl where kcsw_wlid=wl_wlid and kcsw_jzrq between '20041220' and '20041220' 
    group by wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj
    union all
    select wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj ,0 as sqjcsl,0 as sqjcdw,0 as bqrksl,0 as bqrkdw,0 as bqcksl,0 as bqckdw ,sum(kcsw_rksl)-sum(kcsw_cksl) as bqjcsl ,sum(kcsw_rkdw)-sum(kcsw_rkdw) as bqjcdw
    from kcsw ,wl where kcsw_wlid=wl_wlid and kcsw_jzrq <='20041220' group by wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj
      

  11.   

    谢谢各位!
    这样写是否正确了?
    select wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj,sum(sqjcsl),sum(sqjcdw),sum(bqrksl),sum(bqrkdw),sum(bqcksl),
    sum(bqckdw),sum(bqjcsl),sum(bqjcdw) from 
    (
    select wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj ,sum(kcsw_rksl)-sum(kcsw_cksl) as sqjcsl ,sum(kcsw_rkdw)-sum(kcsw_rkdw) as sqjcdw, 0 as bqrksl,0 as bqrkdw,0 as bqcksl,0 as bqckdw,0 as bqjcsl,0 as bqjcdw
    from kcsw ,wl where kcsw_wlid=wl_wlid and kcsw_jzrq <'20041219' group by wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj
    union all
    select wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj,0 as sqjcsl,0 as sqjcdw,sum(kcsw_rksl) as bqrksl,sum(kcsw_rkdw) as bqrkdw ,sum(kcsw_cksl) as bqcksl,sum(kcsw_ckdw) as bqckdw,0 as bqjcsl,0 as bqjcdw
     from  kcsw ,wl where kcsw_wlid=wl_wlid and kcsw_jzrq between '20041220' and '20041220' 
    group by wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj
    union all
    select wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj ,0 as sqjcsl,0 as sqjcdw,0 as bqrksl,0 as bqrkdw,0 as bqcksl,0 as bqckdw ,sum(kcsw_rksl)-sum(kcsw_cksl) as bqjcsl ,sum(kcsw_rkdw)-sum(kcsw_rkdw) as bqjcdw
    from kcsw ,wl where kcsw_wlid=wl_wlid and kcsw_jzrq <='20041220' group by wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj
    ) a 
     group by wl_wlid,kcsw_ph,wl_mc,wl_gg,wl_cz,wl_dj