在此先谢谢pt1314917的指点select PLUSN=isnull(PLUSN,'总计'),SALEQTY=sum(SALEQTY),saleincount=sum(saleincount),SALECOUNT=sum(SALECOUNT)
from [SA_SUMSALEDETAIL]
WHERE (SA_SUMSALEDETAIL.VENID='0003') AND (SA_SUMSALEDETAIL.SALEDATE BETWEEN '2009-01-10' AND '2009-01-15') 
 group by PLUSN with rollup查询出来的数据与另一表BA.INFO关联,通过BA.INFO.PLUSN=SA_SUMSALEDETAIL.PLUSN查询出每一个的详细信息~~
关联语句怎么实现呢???

解决方案 »

  1.   

    没看懂你的要求建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
       参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
       
       1. 你的 create table xxx .. 语句
       2. 你的 insert into xxx ... 语句
       3. 结果是什么样,(并给以简单的算法描述)
       4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
       
       这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。   
      

  2.   

    表TAB1
    PLUSN  PLUID  NAME UINT
    0001   AAA    电脑  台
    0002   BBB    主板  个
    0003   CCC    硬盘  个表TAB2
    PLUSN  x_sale  x_date 
    0001    200    2009-12-01 
    0002    300    2009-12-01 
    0001    100    2009-12-02 
    0003    70     2009-12-02 
    0002    50     2009-12-03 
    0001    150    2009-12-03 例如查询X_date(2009-12-01到2009-12-03)AND PLUSN后,得到如下
    PLUID  NAME UINT  sum(X_sale)
    AAA    电脑  台     450
    BBB    主板  个     350
    CCC    硬盘  个     70
    总计:               870(AAA+BBB+CCC)
      

  3.   

    select a.PLUID,a.NAME,a.UINT,sum(b.X_sale) 
    from 表TAB1 a inner join 表TAB2 b on a.PLUSN=b.PLUSN
    where b.x_date between '2009-12-01' and '2009-12-03'
    group by a.PLUID,a.NAME,a.UINT
    union all
    select '总计:',null,null,sum(X_sale) 
    from 表TAB2
    where x_date between '2009-12-01' and '2009-12-03'
      

  4.   

    1> select * from TAB1;
    2> go
    PLUSN|PLUID|NAME      |UINT
    -----|-----|----------|----
    0001 |AAA  |电脑        |台
    0002 |BBB  |主板        |个
    0003 |CCC  |硬盘        |个(3 rows affected)
    1> select * from TAB2;
    2> go
    PLUSN|x_sale     |x_date
    -----|-----------|--------------------
    0001 |        200| 2009-12-01 00:00:00
    0002 |        300| 2009-12-01 00:00:00
    0001 |        100| 2009-12-02 00:00:00
    0003 |         70| 2009-12-02 00:00:00
    0002 |         50| 2009-12-03 00:00:00
    0001 |        150| 2009-12-03 00:00:00(6 rows affected)
    1> select a.PLUID,a.NAME,a.UINT,sum(b.X_sale)
    2> from TAB1 a inner join TAB2 b on a.PLUSN=b.PLUSN
    3> where b.x_date between '2009-12-01' and '2009-12-03'
    4> group by a.PLUID,a.NAME,a.UINT
    5> union all
    6> select '总计:',null,null,sum(X_sale)
    7> from TAB2
    8> where x_date between '2009-12-01' and '2009-12-03'
    9> go
    PLUID|NAME      |UINT|
    -----|----------|----|-----------
    AAA  |电脑      |台   |        450
    BBB  |主板      |个   |        350
    CCC  |硬盘      |个   |         70
    总计:  |NULL    |NULL |        870(4 rows affected)
    1>
      

  5.   

    感谢ACMAIN_CHM一直的关注与支持
    怎么我按照你的去修改后,它老是提示说
    服务器: 消息 107,级别 16,状态 1,行 1
    列前缀 'BA_PLUINFO' 与查询中所用的表名或别名不匹配。
    服务器: 消息 107,级别 16,状态 1,行 1
    列前缀 'SA_SUMSALEDETAIL' 与查询中所用的表名或别名不匹配。
      

  6.   

    好的,改进提问方式,我的sql语句是:
    select BA_PLUINFO.PLUID,BA_PLUINFO.PLUNAME,BA_PLUINFO.UNIT,sum(SA_SUMSALEDETAIL.SALEQTY) 
    from BA_PLUINFO a inner join SA_SUMSALEDETAIL b on BA_PLUINFO.PLUSN=SA_SUMSALEDETAIL.PLUSN
    where SA_SUMSALEDETAIL.saledate between '2009-12-01' and '2009-12-03'
    group by BA_PLUINFO.PLUID,BA_PLUINFO.NAME,BA_PLUINFO.UNIT
    union all
    select '总计:',null,null,sum(SALEQTY) 
    from SA_SUMSALEDETAIL
    where SA_SUMSALEDETAIL.saledate between '2009-12-01' and '2009-12-03'
      

  7.   

    select a.PLUID,a.NAME,a.UINT,sum(b.X_sale) 
    from TAB1 a inner join TAB2 b on a.PLUSN=b.PLUSN
    where b.x_date between '2009-12-01' and '2009-12-03'
    group by a.PLUID,a.NAME,a.UINT
    union all
    select '总计:',null,null,sum(X_sale) 
    from TAB2
    where x_date between '2009-12-01' and '2009-12-03'
    select BA_PLUINFO.PLUID,BA_PLUINFO.PLUNAME,BA_PLUINFO.UNIT,sum(SA_SUMSALEDETAIL.SALEQTY) 
    from BA_PLUINFO a inner join SA_SUMSALEDETAIL b on BA_PLUINFO.PLUSN=SA_SUMSALEDETAIL.PLUSN
    where SA_SUMSALEDETAIL.saledate between '2009-12-01' and '2009-12-03'
    group by BA_PLUINFO.PLUID,BA_PLUINFO.NAME,BA_PLUINFO.UNIT
    union all
    select '总计:',null,null,sum(SALEQTY) 
    from SA_SUMSALEDETAIL
    where SA_SUMSALEDETAIL.saledate between '2009-12-01' and '2009-12-03'看来这个瓢也不容易画啊。 select a.PLUID,a.PLUNAME,a.UNIT,sum(b.SALEQTY) 
    from BA_PLUINFO a inner join SA_SUMSALEDETAIL b on a.PLUSN=b.PLUSN
    where b.saledate between '2009-12-01' and '2009-12-03'
    group by a.PLUID,a.NAME,a.UNIT
    union all
    select '总计:',null,null,sum(SALEQTY) 
    from SA_SUMSALEDETAIL
    where saledate between '2009-12-01' and '2009-12-03'
      

  8.   

    qiuhuiwu (qiuhuiwu)
      '截至2009-12-13 21:35:58  用户结帖率0.00%  总发帖:2  正常结帖:0  未结帖:2  
      

  9.   

    哈哈,ACMAIN_CHM兄,今天就这个问题把我搞晕了,新手上路,多多支持
      

  10.   

    我还想问一下,如果要再加个条件呢,比如 PLUID like %000% 要怎么再加上去~~先谢谢ACMAIN_CHM兄
      

  11.   


    提问前请先自己想好到底要解决什么问题,不要回答完一个问题,然后紧接着又是一个新问题。这样反而是浪费大家时间。当您的问题得到解答后请及时结贴.
    http://topic.csdn.net/u/20090501/15/7548d251-aec2-4975-a9bf-ca09a5551ba5.htmlselect a.PLUID,a.PLUNAME,a.UNIT,sum(b.SALEQTY) 
    from BA_PLUINFO a inner join SA_SUMSALEDETAIL b on a.PLUSN=b.PLUSN
    where b.saledate between '2009-12-01' and '2009-12-03'
    and a.PLUID like '%000%'
    group by a.PLUID,a.NAME,a.UNIT
    union all
    select '总计:',null,null,sum(SALEQTY) 
    from SA_SUMSALEDETAIL
    where saledate between '2009-12-01' and '2009-12-03'
    and a.PLUID like '%000%'
      

  12.   

    非常感谢ACMAIN_CHM兄
    下次一定改进~~3Q
      

  13.   

    好像有点小错误??最后一个and a.PLUIDlike'%000%'应该不行吧?SA_SUMSALEDETAIL里面都没有PLUID
      

  14.   

    select a.PLUID,a.PLUNAME,a.UNIT,sum(b.SALEQTY) 
    from BA_PLUINFO a inner join SA_SUMSALEDETAIL b on a.PLUSN=b.PLUSN
    where b.saledate between '2009-12-01' and '2009-12-03'
    and a.PLUID like '%000%'
    group by a.PLUID,a.NAME,a.UNIT
    union all
    select '总计:',null,null,sum(SALEQTY) 
    from SA_SUMSALEDETAIL
    where saledate between '2009-12-01' and '2009-12-03'
    and PLUID like '%000%'