写一条SQL语句 有没简单的方法 比如有一个物料单价表 小弟我现在要得到某个料号的最低单价,并将该供应商得到

写一条SQL语句 有没简单的方法 比如有一个物料单价表 我现在要得到某个料号的最低单价,并将该供应商得到
本帖最后由 maocheng82 于 2015-05-04 18:35:50 编辑
我如果写  首先得到一个最低值 ,然后在去通过料号和最低单价做连接(left outer join ) 从而得到供应商店名称  看大家还有没什么好的方法
料号  单价                     供应商
A100 0.0077             灰色客
A100 0.007             富士康
A100 0.0239             小米
A100 0.0206             华为
A100 0.0214             中兴
A100 0.0172             联想

------解决思路----------------------

DECLARE @t_TB TABLE ([partno] NVARCHAR(10),[price] money,[vendor] NVARCHAR(10));
INSERT INTO @t_TB VALUES 
('A100','0.0077','a'),
('A100','0.007','b'),
('A100','0.0239','c'),
('A100','0.0206','d'),
('A100','0.0214','e'),
('A100','0.0172','f');
SELECT * FROM @t_TB T;
/*
partno     price                 vendor
---------- --------------------- ----------
A100       0.0077                a
A100       0.007                 b
A100       0.0239                c
A100       0.0206                d
A100       0.0214                e
A100       0.0172                f
*/
SELECT T.vendor FROM @t_TB T 
WHERE NOT EXISTS( SELECT 1 FROM  @t_TB M WHERE M.PARTNO = T.partno AND M.PRICE < T.price) ;
/*
vendor
----------
b
*/

------解决思路----------------------
使用一个分析函数。


select * from 
(
select ROW_NUMBER() over(partition by 料号 order  by price) rn ,
* from t
) x 
where rn = 1