有以下两个表:表INVLA:
主键:LA007+LA006+LA008+LA005
INDEX01 :LA001+LA009+LA004
===============================================================================================
序号 栏位代号 栏位名称                  TYPE 长度  备注
===============================================================================================
0001 LA001    品号                        C   40   单据品号    //941226 S00-9412072 C20=>C40
0003 LA005    入出别                      N    1   依单据性质之库存影响:减 或 转拨单性质的出写入为-1,其馀为+1。
0004 LA006    单别                        C    4   单据单别&&87-09-24改为4码
0005 LA007    单号                        C   11   单据单号
0006 LA008    序号                        C    4   单据序号
0007 LA009    库别                        C   10   单据库别
0009 LA011    单据异动库存数量            N   16.3 单据异动库存数量//950808 S00-9508031 N11.3->N16.3
0011 LA013    金额                        N   21.6 单据金额//950808 S00-9508031 N13.2->N21.6表INVLA:
LA001              LA005    LA006     LA007     LA008    LA009    LA011    LA013
1F206RM240401       1        1101    200809001   1         3A      560      6230
1F206RM240401       1        1101    200809002   6         3B      780      6690
1F206RM241001       1        1102    200809005   1         3A      850      7526
1F206RM240402      -1        1103    200809007   2         1A      960      8500
1F206RM241001      -1        1103    200809007   1         1A      1060     18560
1F206RM240402       1        1102    200809005   3         1A       930     16806表INVMB:
主键:MB001
INDEX02 :MB002===============================================================================================
序号 栏位代号 栏位名称                  TYPE 长度  备注
===============================================================================================
0001 MB001    品号                        C   40   品号    //941226 S00-9412072 C20=>C40
0002 MB002    品名                        C   60   品名    //941226 S00-9412072 C30=>C60
0003 MB003    规格                        C   60   规格    //941226 S00-9412072 C30=>C60
0004 MB004    库存单位                    C   04   库存单位表INVMB:
  MB001          MB002                   MB003             MB004
1F206RM240401   206 RPT 外印"红牛"      206 0.240 C/G        PCS 
1F206RM240402   206 RPT 双印"旺旺"      206 0.240 C/G        PCS
1F206RM241001   206 0.241 刻字"王老吉"  206 0.241 C/C        PCS 问题:
现在我想用两个表联合查询,得出以下结果:
aa_LA011       aa_LA013       bb_LA011      bb_LA013        cc_LA011         cc_LA013
 560              6230          850            7526           960               8500
 780              6690          930            16806          1060              18560 aa_LA011,aa_LA013为LA006等于1101时的数量和金额
bb_LA011,bb_LA013为LA006等于1102时的数量和金额
cc_LA011,cc_LA013为LA006等于1103时的数量和金额SQL怎样写啊?

解决方案 »

  1.   

    连接关系不是太明确,是要这样吗?create table INVLA(LA001 varchar(40),LA005 int,LA006 varchar(4),LA007 varchar(11),LA008 varchar(4),LA009 varchar(10),LA011 decimal(16,3),LA013 decimal(21,6))
    insert into INVLA select '1F206RM240401',1,1101,'200809001',1,'3A',560,6230 
    insert into INVLA select '1F206RM240401',1,1101,'200809002',6,'3B',780,6690 
    insert into INVLA select '1F206RM241001',1,1102,'200809005',1,'3A',850,7526 
    insert into INVLA select '1F206RM240402',-1,1103,'200809007',2,'1A',960,8500 
    insert into INVLA select '1F206RM241001',-1,1103,'200809007',1,'1A',1060,18560 
    insert into INVLA select '1F206RM240402',1,1102,'200809005',3,'1A',930,16806 
    go
    select id=identity(int,1,1),* into # from INVLA order by LA007,LA006,LA008,LA005select distinct aa.LA011 as aa_LA011,aa.LA013 as aa_LA013,bb.LA011 as bb_LA011,bb.LA013 as bb_LA013,cc.LA011 as cc_LA011,cc.LA013 as cc_LA013
    from 
    (select id,LA011,LA013 from # where LA006='1101')aa,
    (select id,LA011,LA013 from # where LA006='1102')bb,
    (select id,LA011,LA013 from # where LA006='1103')cc
    where aa.id+2=bb.id and bb.id+2=cc.id
    go
    drop table invla,#
    /*
    aa_LA011                                aa_LA013                                bb_LA011                                bb_LA013                                cc_LA011                                cc_LA013
    --------------------------------------- --------------------------------------- --------------------------------------- --------------------------------------- --------------------------------------- ---------------------------------------
    560.000                                 6230.000000                             850.000                                 7526.000000                             1060.000                                18560.000000
    780.000                                 6690.000000                             930.000                                 16806.000000                            960.000                                 8500.000000(2 行受影响)*/
      

  2.   

    主键:LA007+LA006+LA008+LA005 
    LA001              LA005    LA006    LA007    LA008    LA009    LA011    LA013 
    1F206RM240402      -1        1103    200809007  2        1A      960      8500 
    1F206RM241001      -1        1103    200809007  1        1A      1060    18560 
    前两个相等,LA008为1的要排到前面去的.
      

  3.   

    我是要用INVMB来JOIN表INVLA这个表,最后再得出结果,
      

  4.   

    aa_LA011      aa_LA013      bb_LA011      bb_LA013        cc_LA011        cc_LA013 
    不太清楚这些代表什么?
    是品名?
      

  5.   

    aa_LA011,aa_LA013为LA006等于1101时的数量和金额 
    bb_LA011,bb_LA013为LA006等于1102时的数量和金额 
    cc_LA011,cc_LA013为LA006等于1103时的数量和金额
      

  6.   

    借鉴一下,不只有用不?
    select LA006,LA001,LA013
    from INVLA 
    Join INVLB
    on (LA001=MB001)
    order by LA006
      

  7.   

    你的那个#号代表什么?还有就是identity这个函数有什么用的,你定放的id的用途是什么啊
      

  8.   


    你的那个#号代表什么?还有就是identity这个函数有什么用的,你定放的id的用途是什么啊?