首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

高手快来看看,巨难有关问题!

2012-01-31 
高手快来看看,巨难问题!!!!!!!!!!!!!!!!!!!!!!!!!!!!!有三张数据表供应商表、采购定单表和一个分配比例表。

高手快来看看,巨难问题!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
有三张数据表供应商表、采购定单表和一个分配比例表。
第一张表通过SQL查询语句获得价格最低的三个供应商。结果见下表
表一
产品ID     供应商ID                   价格
131920510.0000000000
1319207120.0000000000
13192061245.0000000000
13222052.0000000000
13332051.0000000000
1334205.5000000000
13462055.0000000000
13562055.0000000000


采购定单表通过SQL查询语句获得每种产品的需求合计数量。结果见下表
表二
单号         产品ID     采购的总数量
413194000.0000000000
413223500.0000000000
413333600.0000000000
413343850.0000000000
413463600.0000000000
413563860.0000000000
413583200.0000000000
413592900.0000000000

最后一张表
表三
序号         比例
170
220
310

现在要做的工作就是:
按产品编号来算。有可能为同一种产品有只有一个供应商,也有能为2或者3,如果为3个供应商,则按照价格由低到高,在表三中增加一列把百分比由高到低加到表一里面对应的行产品后面。然后还要把表二里面的产品采购总数增加到表一里面。

请问:这个如何在SQL查询器通过SQL语句来实现(不用存储过程)????


[解决办法]
设表1为tVendor : ProductID,VendorID,Price
t2 : ProductID, Num
t3 : 序号,Per


由于CSDN的排版乱了,你的测试数据我看不清,就没试,随手敲了一下

SELECT ProductID,COUNT(*) cnt, INTO #base FROM tVendor GROUP BY ProductID
HAVING COUNT(*) <> 2

SELECT a.ProductID pid,a.Num num,v.Price price, '100% ' [percent] INTO #RST
FROM tb2 a inner join #base b ON a.Productid=b.Productid
inner join tVendor v on v.Productid=a.Productid WHERE cnt=1

INSERT #RST
SELECT b.ProductID,a.Num * c.per,v.Price,RTRIM(c.per) + '% "
FROM tb2 a
INNER JOIN #base b
ON a.Productid=b.Productid
INNER JOIN tVendor v
ON v.Productid=a.Productid
INNER JOIN tb3 c
ON c.序号=
(
SELECT COUNT(*) FROM tVendor WHERE Productid=a.Productid AND Vendorid=v.VendorID
AND Price <=v.Price
)
[解决办法]
顶一下
[解决办法]
然后还要把表二里面的产品采购总数增加到表一里面。

-----------------
只要 select语句也能实现?那才叫奇了...

热点排行