2014-03-05 79 views
1

我想从事务列表中获取每个日期,每个项目,每个变体的最大日期时间。tSQL - SQL 2008 - 嵌套查询?

我尝试到目前为止是:

SELECT variantid, 
     itemid, 
     MAX(STARTDATE) as MaximumDateTimeForThisDay 
FROM myTable 
GROUP BY variantid, 
      itemid, 
      DATEADD(dd, DATEDIFF(dd, 0, t1.MODIFIEDDATETIME), 0) --- to remove the time stamp 

我需要获得最新的价格每天以来的价格每个项目和变体可以全天变化,但我总是想要最新的价格为每当天项目。

最终,我想让我的输出成为每天每个变体的最近价格。我相信这可以在一个(嵌套)查询中完成,但无法弄清楚。

如果可以的话请帮忙!

+0

**上述查询仍然给我每天不止一个结果。再次感谢 – sdg320

+0

您能否提供一些样本数据和期望的结果? “每个日期,每个项目,每个变体的最大日期时间”对我而言并不清楚。 –

+0

你能举一些例子数据和预期的结果吗? – wumpz

回答

1

上面用于从修改日期中删除时间组件的代码不起作用。除了跳过您的DATEADD环以消除时间外,只需将列转换为date即可。

SELECT variantid, itemid, MAX(STARTDATE) as MaximumDateTimeForThisDay 
FROM myTable GROUP BY variantid, itemid, convert(date, t1.MODIFIEDDATETIME) 
+0

这仍然给我每天重复的条目。下面是一些示例数据:
VARIANTID \t STARTDATE \t PriceGroup \t金额\t ITEMID \t newStartDate
周日,2013年7月14日下午4点21分46秒\t在线 CUVACR \t省略记录
周日,七月14,2013下午4时十九分15秒\t在线 CUVACR \t 2014年7月14日
周日,2013年7月14日下午4时21分46秒\t全价 CUVACR \t省略记录
周日,2013年7月14日下午4点19分15秒\t全价 CUVACR \t 2014年7月14日
周日,2013年7月14日下午4时21分46秒\t出口 CUVACR \t省略记录
周日,2013年7月14日下午4时十九分15秒\t出口 CUVACR \t 2014年7月14日
sdg320

+0

这种方式组合无法给你重复的条目为相同variantid和i在给定的一天内。如果你想用实际的SQL更新你的问题(除非这是真正的声明和你正在使用的表格)和表格数据,我可以尝试进一步提供帮助。评论不允许太多的格式,所以请修改您的问题。 –

+0

好的,我再试一次,之前肯定犯了一个错误。但是,我需要一个最近的日期与相关数量的条目。 如果我用这个: SELECT MAX(MODIFIEDDATETIME)AS STARTDATE,金额,ITEMID从我的表 WHERE的itemid = 'V9800' 组通过转换(日期,MODIFIEDDATETIME),量 我得到两个行,因为有两个不同金额。 如果我用这个: SELECT MAX(MODIFIEDDATETIME)AS STARTDATE,ITEMID 从我的表 WHERE的itemid = 'V9800' 组通过转换(日期,MODIFIEDDATETIME) 我得到1行,但我没有量。我需要嵌套查询吗? – sdg320