注册 登录
编程论坛 SQL Server论坛

哪位高手帮帮我,我写不出来!有办法可以写出来不?谢谢了

菜鸟问菜问题 发布于 2010-11-29 16:37, 457 次点击
表1
GOODSID    GOODSNAME    SHOPID    DHBS
00173637    ★洁婷10P小护翼绢爽迷你卫生巾1    12078    暂停订货
00173637    ★洁婷10P小护翼绢爽迷你卫生巾1    12080    正常   
00173637    ★洁婷10P小护翼绢爽迷你卫生巾1    12081    正常   
00173637    ★洁婷10P小护翼绢爽迷你卫生巾1    12082    暂停订货
00173637    ★洁婷10P小护翼绢爽迷你卫生巾1    12083    暂停订货
00173637    ★洁婷10P小护翼绢爽迷你卫生巾1    12084    正常   
00173637    ★洁婷10P小护翼绢爽迷你卫生巾1    12085    正常   
00173637    ★洁婷10P小护翼绢爽迷你卫生巾1    12086    暂停订货
00173637    ★洁婷10P小护翼绢爽迷你卫生巾1    12087    正常   
00173637    ★洁婷10P小护翼绢爽迷你卫生巾1    12088    正常   
表2
ACCTDATE    SHOPID    GOODSID    BUSITYPE    ACCTFLAG    TRANSQTY
20080116    012073    11551299    1    1    12
20080116    012073    11554009    1    1    10
20080116    012073    21110001    1    1    600
20080116    012073    21110982    1    1    240
20080116    012044    11234865    1    1    64
20080116    012044    11234957    1    1    12
20080116    012044    11234958    1    1    24
20080116    012044    11234964    1    1    60
20080116    012044    00184227    1    1    100
20080116    012044    27443957    1    1    40
20080116    012044    27443958    1    1    500
20080116    012044    27450869    1    1    32
20080116    012044    25310038    1    1    80
20080116    012044    23223950    1    1    45
表3
PR0101    PR0102    PR0103    PR0104
00220832    012002    26000217    6
00329366    012002    17000359    61
11221011    012002    29000831    3
12221920    012002    12000249    5
11551282    012002    29000542    27
00335845    012002    16000398    111
00330816    012002    17000571    64
00337969    012002    27001005    6
00261298    012002    12000133    7
00205178    012002    29000905    5

:表1 GOODSID=表2 GOODSID=表3 PR0101,表1 SHOPID=表2 SHOPID=表3 PR0102, 要求:表2 ACCTDATE= 20101123 至 20101125。表2 BUSITYPE=11,按表1 GOODSID,SHOPID,求表2 TRANSQTY、表3 PR0104的数量。
2 回复
#2
cnfarer2010-11-29 20:46
select ... from 表1 a,(select * from 表2 where ACCDATE between '20101123' and '20101125' and  BUSITYPE=11) b,表3 c where 连接条件
#3
makebest2010-12-01 10:43
有点复杂呢
程序代码:
select 表1.goodsid, 表1.shopid,
sum(表2.transqty), sum(表4.Pr0104)
from 表1
left join 表2
on 表1.goodsid=表2.goodsid and 表1.shopid=表2.shopid
and 表2.accdate between '20101123' and '20101125'
left join
( select pr0101 goodsid, pr0102 shopid, sum(pr0104) pr0104
from 表3
group by pr0101,pr0102
) 表4
on 表1.goodsid=表4.goodsid and 表1.shopid=表4.shopid
group by 表1.goodsid, 表1.shopid

1