2013-05-30 75 views
0

我有一张表格,列出可供出售的物品以及每个物品的销售日期,物品的上市日期和物品的日期被重新宣传为销售。选择一个日期,然后选择该日期前的前一个日期

我想为销售日期,销售日期之前首先列出的日期以及广告最后发布日期的每个项目只获取一行。

所以,下面我显示的数据要得到的只有最后一排

Item ID Sale_Date Listing_Date Published_date 
1466748 4/04/2012 5/12/2011 0:00 5/12/2011 0:00 
1466748 4/04/2012 5/12/2011 0:00 24/12/2011 0:00 
1466748 4/04/2012 5/12/2011 0:00 7/01/2012 0:00 
1466748 4/04/2012 5/12/2011 0:00 4/02/2012 0:00 
1466748 4/04/2012 5/12/2011 0:00 18/02/2012 0:00 
1466748 4/04/2012 5/12/2011 0:00 3/03/2012 0:00 
1466748 4/04/2012 5/12/2011 0:00 17/03/2012 0:00 

回答

0

应是这样的简单:

select item_id, min(sale_date), min(listing_date), max(published_date) 
from listing_table group by item_id 
+0

感谢这两个答复。该查询实际上更复杂一些,并且因为没有很好地解释它而道歉。因为一件商品可以在特定时期内出售并重新列出一次以上,我实际上是经过了一些逻辑后,允许我在销售日期之前或之前检索第一个上市和发布日期。我添加了一个不同的示例数据集。希望澄清! – Riccina

+0

ITEM ID \t已售DATE \t上市日期\t发表日期 \t 24/07/2003 22/07/2003 \t 22/07/2003 \t 2007年5月4日31/03/2007 \t 31/03/2007 2007年5月4日\t 31/03/2007 \t 14/04/2007 2007年5月4日\t 31/03/2007 \t 21/04/2007 2007年5月4日\t 31/03/2007 \t 24/04/2007 2007年5月4日\t 31/03/2007 \t 2007年5月5日 2007年5月4日\t 31/03/2007 19/05/2007 \t 24/05/2012 \t 15/05/2012 \t 15/05/2012 \t 24/05/2012 15/05/2012 \t 17/05/2012 \t 24/05/2012 15/05/2012 \t 24/05/2012 – Riccina

0

假设销售日期和上市日期会对于给定项目ID的所有行都是相同的,

SELECT ITEM_ID, SALE_DATE, LISTING_DATE, MAX(PUBLISHED_DATE) 
FROM YOUR_TABLE 
GROUP BY ITEM_ID, SALE_DATE, LISTING_DATE; 
相关问题