我有一个问题,是关于SQL Server 查询的,求一查询语句商品编码唯一,同一商品取单价为最低一条记录。问题如下:
商品编码 数量 单价 供应商 001 20 0.3 工商企业 001 50 0.1 AB企业 002 100 1.2 OK企业 003 200 2.4 AB企业 003 500 1.2 SQ企业 |
求一查询语句商品编码唯一,同一商品取单价为最低一条记录,结果如下:
商品编码 数量 单价 供应商 001 50 0.1 AB企业 002 100 1.2 OK企业 003 500 1.2 SQ企业 |
回答一:
--测试环境 Declare @t table(商品编码 varchar(10),数量 int,单价 decimal(4,2),供应商 varchar(10)) insert into @t select '001',20,0.3,'工商企业' union all select '001',50,0.1,'AB企业' union all select '002',100,1.2,'OK企业' union all select '003',200,2.4,'AB企业' union all select '003',500,1.2,'SQ企业' --查询 select * from @t A where not exists (select 1 from @t where 商品编码=A.商品编码 and 单价<A.单价) --结果 商品编码 数量 单价 供应商 ---------- ----------- ------ ---------- 001 50 .10 AB企业 002 100 1.20 OK企业 003 500 1.20 SQ企业
(所影响的行数为 3 行)
|
回答二:
Declare @t table(商品编码 varchar(10),数量 int,单价 decimal(4,2),供应商 varchar(10)) insert into @t select '001',20,0.3,'工商企业' union all select '001',50,0.1,'AB企业' union all select '002',100,1.2,'OK企业' union all select '003',200,2.4,'AB企业' union all select '003',500,1.2,'SQ企业' union all select '004',500,1.2,'SQ企业' union all select '003',500,1.2,'SQ企业' select a.* from @t a,(select 商品编码,min(单价) aaa from @t group by 商品编码)as aa where aa.商品编码=a.商品编码 and a.单价=aa.aaa
|