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

SQL求某个表里的最新时间,最低单价(ERP采办应用)

2014-01-09 
SQL求某个表里的最新时间,最低单价(ERP采购应用)我的需求是:求每个产品的最近报价时间 最低报价 注意:千万

SQL求某个表里的最新时间,最低单价(ERP采购应用)

我的需求是:求每个产品的最近报价时间 最低报价 注意:千万不要简单地把报价时间 和最低单价用ORDER BY语句进行排序 这样有很严重的BUG。根本求不出最近时间 最低单价 我要求出最近时间 那个时值的最低单价  这才是我的重点 请各位高手帮帮忙忙


表如下 表名:UP_DEF    (说明:采购政策)
============================================================================
产品编号    供应商    单价        报价时间
鼠标         A1       6        2013-12-30
鼠标         A2       10       2014-01-08
鼠标         A2       12       2014-01-08
鼠标         A3       2        2013-12-01
键盘         B2       4        2013-10-01
键盘         B2       6        2014-01-08
键盘         B3       5        2014-01-08
键盘         B5       3        2012-01-05
显示器       A1       10       2014-01-01
显示器       A2       8        2014-01-01 

============================================================================

我要出来的结果是这样的(实际UP_DEF表中的数据有上万条)
============================================================================
产品编号    供应商    单价        报价时间
鼠标         A2       10        2014-01-08
键盘         B3        5        2014-01-08
显示器       A2        8        2014-01-01
[解决办法]
刚才的错了,修改一下

----------------------------------------------------------------
-- Author  :DBA_Huangzj(發糞塗牆)
-- Date    :2014-01-08 09:14:39
-- Version:
--      Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64) 
--Dec 28 2012 20:23:12 
--Copyright (c) Microsoft Corporation
--Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )
--
----------------------------------------------------------------
--> 测试数据:[UP_DEF]
if object_id('[UP_DEF]') is not null drop table [UP_DEF]
go 
create table [UP_DEF]([产品编号] varchar(6),[供应商] varchar(2),[单价] int,[报价时间] datetime)
insert [UP_DEF]
select '鼠标','A1',6,'2013-12-30' union all
select '鼠标','A2',10,'2014-01-08' union all
select '鼠标','A2',12,'2014-01-08' union all
select '鼠标','A3',2,'2013-12-01' union all
select '键盘','B2',4,'2013-10-01' union all
select '键盘','B2',6,'2014-01-08' union all
select '键盘','B3',5,'2014-01-08' union all
select '键盘','B5',3,'2012-01-05' union all
select '显示器','A1',10,'2014-01-01' union all
select '显示器','A2',8,'2014-01-01'
--------------开始查询--------------------------
SELECT *
FROM [UP_DEF] a
WHERE EXISTS (SELECT 1 FROM (
SELECT 产品编号,MIN(单价)单价,报价时间
FROM [UP_DEF] a
WHERE EXISTS (SELECT 1 FROM (SELECT [产品编号],max([报价时间])[报价时间] FROM [UP_DEF] group BY [产品编号] ) b
WHERE a.[产品编号]=b.[产品编号]  AND a.[报价时间]=b.[报价时间] )
GROUP BY 产品编号,报价时间) c where a.产品编号=c.产品编号 AND a.单价=c.单价 AND a.报价时间=c.报价时间)
----------------结果----------------------------


/* 
产品编号   供应商  单价          报价时间
------ ---- ----------- -----------------------
鼠标     A2   10          2014-01-08 00:00:00.000
键盘     B3   5           2014-01-08 00:00:00.000
显示器    A2   8           2014-01-01 00:00:00.000

*/

热点排行