表一
id 已售数量
1      3
2      4
4      5
表二
id 库存数量
1   2
2   3
3   4
4   5
5   6
现在做一个简单的统计
从表二中选取只包含表一的记录~
然后计算 筛选出来的记录中的库存数量+表一的已售数量的总和
结果:
id 总数量    已售数量
1    5(=2+3)     3
2    7(=3+4)     4
4    10(=5+5)    5

解决方案 »

  1.   

    trySelect 
    A.id, 
    SUM(已售数量 + 库存数量) As 总数量, 
    SUM(已售数量) As 已售数量
    From 
    表一 A
    Inner Join
    表二 B
    On A.id = B.id
    Group By
    A.id
      

  2.   

    這樣應該更准確。在表二中,id應該是不會重復的。Select 
    A.id, 
    已售数量 + 库存数量 As 总数量, 
    已售数量
    From 
    表一 A
    Inner Join
    (Select id, SUM(已售数量) As 已售数量 From 表二 Group By id) B
    On A.id = B.id
      

  3.   

    --上面的表一和表二弄錯了--另外在表一中,id如果是不會重復的, 也可以這麼寫。Select 
    A.id, 
    SUM(已售数量) + MAX(库存数量) As 总数量, 
    SUM(已售数量) As 已售数量
    From 
    表一 A
    Inner Join
    表二 B
    On A.id = B.id
    Group By 
    A.id
      

  4.   

    其實這裡用不用MAX都是一樣的。反正在表一中一個id只有一條數據,關聯表二之後,相同的id的库存数量的庫存數量是一樣的。你也可以這麼用Select 
    A.id, 
    SUM(已售数量) + 库存数量 As 总数量, 
    SUM(已售数量) As 已售数量
    From 
    表一 A
    Inner Join
    表二 B
    On A.id = B.id
    Group By 
    A.id, B.库存数量
      

  5.   

    行了~不过我还是不懂这sql 怎么写出来
    特别是inner join
    可以说一下你的思路吗
      

  6.   

    那就簡單了Select 
    A.id, 
    已售数量 + 库存数量 As 总数量, 
    已售数量 As 已售数量
    From 
    表一 A
    Inner Join
    表二 B
    On A.id = B.id
      

  7.   

    思路很簡單,用inner join,將倆表關聯,得到倆表中都存在的id,然後將已售数量 + 库存数量就是总数量了。關於inner join,你可以看到聯機幫助,上面的例子比較詳細。
      

  8.   

    其实我知道inner join out join 但就不知道只能用在没重复的字段上
      

  9.   

    danny99999() ( ) 信誉:100    Blog   加为好友  2007-06-09 16:41:08  得分: 0  
     
     
       对了~还有一个关键就是你刚刚说的id 唯一性
    如果是有重复怎么办?
      
     
    --------
    按道理,庫存表應該不會有id重復,而銷售表id有可能重復。就這麼寫Select 
    A.id, 
    SUM(已售数量) + 库存数量 As 总数量, 
    SUM(已售数量) As 已售数量
    From 
    表一 A
    Inner Join
    表二 B
    On A.id = B.id
    Group By 
    A.id, B.库存数量
    如果倆表id都不會重復Select 
    A.id, 
    已售数量 + 库存数量 As 总数量, 
    已售数量 As 已售数量
    From 
    表一 A
    Inner Join
    表二 B
    On A.id = B.id
      

  10.   

    danny99999() ( ) 信誉:100    Blog   加为好友  2007-06-09 16:43:04  得分: 0  
     
     
       其实我知道inner join out join 但就不知道只能用在没重复的字段上
      
     
    -----------
    我可沒說inner join不能用在重复的字段上, :)。你看看例子,再自己寫下代碼,理解下。
      

  11.   

    select t.ID,sum(t.已售数量 + t1.库存数量) as 总数量,sum(已售数量) as 已售数量
    from 表1 t left join 表2 t1 on t.id = t1.id
    group by t.id
      

  12.   

    我知道是可以用在重复字段上~
    我的意思是如果有重复的话~那这sql 就不符合实际情况了
      

  13.   

    不管是否都可以用inner join的,你可以看看上面兩種情況的寫法,具體情況,具體對待。
      

  14.   

    不管是否重復都可以用inner join的,你可以看看上面兩種情況的寫法,具體情況,具體對待。