F
fstao
Unregistered / Unconfirmed
GUEST, unregistred user!
mssql7.0的问题:
假如有主表dbo.salary_storage
id name
1 a
2 b
3 c
从表dbo.salary_detail(sid是自增字段,id是与主表id关联,proid_in是进货的,与
product_storage的id 关联的,proid_out是退货的,与product_storage的id关联的,
sl_in和sl_out分别是进货数量和退货数量,而price_in和price_out分别是进货单价和
退货单价)
sid id proid_in proid_out sl_in sl_out price_in price_out
1 1 1 2 10
2 1 2 1 12
3 1 2 1 12
4 1 1 1 10
5 2 3 4 2
6 2 4 3 3
7 2 3 2 2
货物表:dbo.product_storage
id pro_name
1 A货品
2 B货品
3 C货品
4 D货品
比如要显示以下的明细表:
货物名称 进货数量 进货金额
A货品 2 20
B货品 1 12
C货品 4 8
D货品 3 9
我这样写:select p1.pro_name 货物名称,sum(s1.sl_in) 进货数量,sum(s1.sl_in*s1.price_in)
进货金额, sum(s2.sl_out) 退货数量, sum(s2.sl_out*s2.price_out) 退货金额 from
product_storage p1 left join salary_detail s1 on s1.proid_in = p1.id left join
salary_detail s2 on s2.proid_out = p1.id group by p1.pro_name
就会显示这样的明细表:
货物名称 进货数量 进货金额 退货数量 退货金额
A货品 2 20 1 10
B货品 1 12 1 12
C货品 4 8 2 4
D货品 3 9
但是我再加个条件根据主表dbo.salary_storge的name=b时得到的明细表:
货物名称 进货数量 进货金额 退货数量 退货金额
C货品 4 8 2 4
D货品 3 9
又如何这写sql语句呢?
假如有主表dbo.salary_storage
id name
1 a
2 b
3 c
从表dbo.salary_detail(sid是自增字段,id是与主表id关联,proid_in是进货的,与
product_storage的id 关联的,proid_out是退货的,与product_storage的id关联的,
sl_in和sl_out分别是进货数量和退货数量,而price_in和price_out分别是进货单价和
退货单价)
sid id proid_in proid_out sl_in sl_out price_in price_out
1 1 1 2 10
2 1 2 1 12
3 1 2 1 12
4 1 1 1 10
5 2 3 4 2
6 2 4 3 3
7 2 3 2 2
货物表:dbo.product_storage
id pro_name
1 A货品
2 B货品
3 C货品
4 D货品
比如要显示以下的明细表:
货物名称 进货数量 进货金额
A货品 2 20
B货品 1 12
C货品 4 8
D货品 3 9
我这样写:select p1.pro_name 货物名称,sum(s1.sl_in) 进货数量,sum(s1.sl_in*s1.price_in)
进货金额, sum(s2.sl_out) 退货数量, sum(s2.sl_out*s2.price_out) 退货金额 from
product_storage p1 left join salary_detail s1 on s1.proid_in = p1.id left join
salary_detail s2 on s2.proid_out = p1.id group by p1.pro_name
就会显示这样的明细表:
货物名称 进货数量 进货金额 退货数量 退货金额
A货品 2 20 1 10
B货品 1 12 1 12
C货品 4 8 2 4
D货品 3 9
但是我再加个条件根据主表dbo.salary_storge的name=b时得到的明细表:
货物名称 进货数量 进货金额 退货数量 退货金额
C货品 4 8 2 4
D货品 3 9
又如何这写sql语句呢?