2 xinliyinanmian XinLiYinAnMian 于 2015.05.29 11:12 提问

SQLServer的一个进销存问题

数据库问题。一个购进数量表,一个销售数量表。如何即时动态得到库存数字。sql语句该怎么写?谢谢

select a.shl-b.shl as 库存数量 from
(SELECT SUM(shl),spid from ywsys_ywmx where djbh like 'JHD%' and zzrq>='2015-01-01' group by spid) a
(select SUM(shl),spid from ls_daymxls where rq>='2015-01-01' group by spid)b where a.spid=b.spid
报错 不知道怎么回事

10个回答

guwei4037
guwei4037   Ds   Rxr 2015.05.29 11:17

报什么错?上表结构和测试数据。

(SELECT SUM(shl),spid from ywsys_ywmx where djbh like 'JHD%' and zzrq>='2015-01-01' group by spid) a ,
(select SUM(shl),spid from ls_daymxls where rq>='2015-01-01' group by spid)b where a.spid=b.spid

少个逗号。

guwei4037
guwei4037   Ds   Rxr 2015.05.29 11:23

或者这么写,结构清晰点。

 with a as(
    SELECT SUM(shl),spid from ywsys_ywmx where djbh like 'JHD%' and zzrq>='2015-01-01' group by spid
),

b as(
    select SUM(shl),spid from ls_daymxls where rq>='2015-01-01' group by spid
)

select * from a , b where a.fzjid = b.fzjid
danielinbiti
danielinbiti   Ds   Rxr 2015.05.29 11:28
改成下面这样SUM(SHL)增加别名,改成SUM(shl) shl,如下:
 select a.shl-b.shl as 库存数量 from 
(SELECT SUM(shl) shl,spid from ywsys_ywmx where djbh like 'JHD%' and zzrq>='2015-01-01' group by spid) a
(select SUM(shl) shl,spid from ls_daymxls where rq>='2015-01-01' group by spid)b where a.spid=b.spid 
fx_ss
fx_ss   2015.05.29 11:38

真的是少了一个逗号哦,就在别名a 那里

fx_ss
fx_ss   2015.05.29 11:38

真的是少了一个逗号哦,就在别名a 那里

qq_28574867
qq_28574867   2015.05.29 11:46

别名a后少个逗号,增加两个别名SUM(shl) shl,另,这个sql语句貌似只得到库存变动值,而不是实际库存值

z345434645
z345434645   2015.05.29 12:22

就A那里少个逗号,感觉逻辑是正确的啊。

testcs_dn
testcs_dn   Rxr 2015.05.29 13:33

具体报的什么错误?贴出来。

liuyuxuan2388
liuyuxuan2388   2015.05.29 16:27

from a, b
ab之间要加逗号

abreast
abreast   2015.06.02 09:17

既然是进销存 就必须有个库存表用于存放商品库存结存数量; 只有通过结存数量 购进数量 销售数量才能得到实时库存;

Csdn user default icon
上传中...
上传图片
插入图片