求同一商品不同代理在相同条件下的最新价
作者:admin 日期:2009-11-17
先前实现过的,还记录了Blog.不过这次有点不一样,记录一下。感谢fredrickhu
求同一商品不同代理在相同条件下的最新价 ,如题
表:
商品代号 代理号 型号 代理价 生效日
1001 A01 H042 3.80 2009-11-12
1002 B37 H042 5.80 2009-11-13
1001 B01 H052 5.80 2009-11-10
1003 B48 H032 3.8 2009-11-17
1002 B37 H042 6.87 2009-10-15
要获取如下结果
1001 A01 H052 3.80 2009-11-12
1002 B37 H042 5.80 2009-11-13
我不知是想混淆了还是怎样,很早前做过一次这样的,可是现在感觉不对,我当初是这样做的
相同记录行如何取最大值
http://www.dezai.cn/blog/article.asp?id=201
但现在是同一商品不同代理在相同条件下的最新价,好像这样是取不到的,请教大家如何实现,谢谢。
solution:
----------------------------------------------------------------
-- Author :fredrickhu(小F,向高手学习)
-- Date :2009-11-17 23:00:18
-- Version:
-- Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86)
-- Nov 24 2008 13:01:59
-- Copyright (c) 1988-2005 Microsoft Corporation
-- Developer Edition on Windows NT 5.1 (Build 2600: Service Pack 3)
--
----------------------------------------------------------------
--> 测试数据:[tb]
if object_id('[tb]') is not null drop table [tb]
go
create table [tb]([商品代号] int,[代理号] varchar(3),[型号] varchar(4),[代理价] numeric(3,2),[生效日] datetime)
insert [tb]
select 1001,'A01','H042',3.80,'2009-11-12' union all
select 1002,'B37','H042',5.80,'2009-11-13' union all
select 1001,'B01','H052',5.80,'2009-11-10' union all
select 1003,'B48','H032',3.8,'2009-11-17' union all
select 1002,'B37','H042',6.87,'2009-10-15'
--------------开始查询--------------------------
----------------结果----------------------------
/*商品代号 代理号 型号 代理价 生效日
----------- ---- ---- --------------------------------------- -----------------------
1001 A01 H042 3.80 2009-11-12 00:00:00.000
1001 B01 H052 5.80 2009-11-10 00:00:00.000
1003 B48 H032 3.80 2009-11-17 00:00:00.000
1002 B37 H042 6.87 2009-10-15 00:00:00.000
(4 行受影响)
*/
贴子:
http://topic.csdn.net/u/20091117/22/98dafeeb-fd09-4360-98b1-0ee5cc62e5cf.html?50267124
求同一商品不同代理在相同条件下的最新价 ,如题
表:
商品代号 代理号 型号 代理价 生效日
1001 A01 H042 3.80 2009-11-12
1002 B37 H042 5.80 2009-11-13
1001 B01 H052 5.80 2009-11-10
1003 B48 H032 3.8 2009-11-17
1002 B37 H042 6.87 2009-10-15
要获取如下结果
1001 A01 H052 3.80 2009-11-12
1002 B37 H042 5.80 2009-11-13
我不知是想混淆了还是怎样,很早前做过一次这样的,可是现在感觉不对,我当初是这样做的
相同记录行如何取最大值
http://www.dezai.cn/blog/article.asp?id=201
但现在是同一商品不同代理在相同条件下的最新价,好像这样是取不到的,请教大家如何实现,谢谢。
solution:
----------------------------------------------------------------
-- Author :fredrickhu(小F,向高手学习)
-- Date :2009-11-17 23:00:18
-- Version:
-- Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86)
-- Nov 24 2008 13:01:59
-- Copyright (c) 1988-2005 Microsoft Corporation
-- Developer Edition on Windows NT 5.1 (Build 2600: Service Pack 3)
--
----------------------------------------------------------------
--> 测试数据:[tb]
if object_id('[tb]') is not null drop table [tb]
go
create table [tb]([商品代号] int,[代理号] varchar(3),[型号] varchar(4),[代理价] numeric(3,2),[生效日] datetime)
insert [tb]
select 1001,'A01','H042',3.80,'2009-11-12' union all
select 1002,'B37','H042',5.80,'2009-11-13' union all
select 1001,'B01','H052',5.80,'2009-11-10' union all
select 1003,'B48','H032',3.8,'2009-11-17' union all
select 1002,'B37','H042',6.87,'2009-10-15'
--------------开始查询--------------------------
复制内容到剪贴板
程序代码
![程序代码](images/code.gif)
select
*
from
tb t
where
not exists(select 1 from tb where 商品代号=t.商品代号 and 代理号=t.代理号 and 型号=t.型号 and 代理价>t.代理价)
*
from
tb t
where
not exists(select 1 from tb where 商品代号=t.商品代号 and 代理号=t.代理号 and 型号=t.型号 and 代理价>t.代理价)
----------------结果----------------------------
/*商品代号 代理号 型号 代理价 生效日
----------- ---- ---- --------------------------------------- -----------------------
1001 A01 H042 3.80 2009-11-12 00:00:00.000
1001 B01 H052 5.80 2009-11-10 00:00:00.000
1003 B48 H032 3.80 2009-11-17 00:00:00.000
1002 B37 H042 6.87 2009-10-15 00:00:00.000
(4 行受影响)
*/
贴子:
http://topic.csdn.net/u/20091117/22/98dafeeb-fd09-4360-98b1-0ee5cc62e5cf.html?50267124
评论: 0 | 引用: 0 | 查看次数: 6685
发表评论