写一条SQL语句 有没简单的方法 比如有一个物料单价表 小弟我现在要得到某个料号的最低单价,并将该供应商得到
写一条SQL语句 有没简单的方法 比如有一个物料单价表 我现在要得到某个料号的最低单价,并将该供应商得到
我如果写 首先得到一个最低值 ,然后在去通过料号和最低单价做连接(left outer join ) 从而得到供应商店名称 看大家还有没什么好的方法
料号 单价 供应商
A100 0.0077 灰色客
A100 0.007 富士康
A100 0.0239 小米
A100 0.0206 华为
A100 0.0214 中兴
A100 0.0172 联想
------解决思路----------------------
------解决思路----------------------
使用一个分析函数。
我如果写 首先得到一个最低值 ,然后在去通过料号和最低单价做连接(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