SQL从两个时间段中选择最大值

时间:2010-04-26 02:57:08

标签: sql sql-server

我有一个查询,我试图从夏季期间选择最大值(此处为nov-april),但它只给出了来自nov-dec的值与此查询。有什么想法吗?

SELECT TOP 10 Value, DateTime 
  FROM history
 WHERE Tagname = @Tag
   AND 
       ((DateTime >= @StartYear AND DateTime < @StartWinter)
    OR 
       (DateTime >= @FinishWinter AND DateTime < @FinishYear))
ORDER BY Value DESC

3 个答案:

答案 0 :(得分:0)

(DateTime&gt; = startYear和datetime&lt; startwinter)为您提供jan和2009年4月之间的所有结果。 (Datetime&gt; finishwinter和datetime&lt; finishyear)给出了09年11月11日的所有结果。

所以,你从2009年1月2月3月4月选择前10名。如果这是你想要选择的,而你只是在2009年12月11日获得价值,请检查是否应该有值其他几个月?

如果@startwinter不是年敏感的话,你也可能会在2010年1月1日获得。

答案 1 :(得分:0)

使用'TOP 10'时,你不应该使用'ORDER BY'吗?

你住在哪个地方,或者改写它:什么是合理的日期(@StartYear,@ StartWinter,@ FinishWinter,@ FinishYear)

在欧洲我期待:

  • StartYear = 2010-01-01
  • FinishYear = 2010-12-31
  • StartWinter = 2010-12-20(about)
  • FinishWinter = 2010-03-20(关于)

所以第一期从2010-01-01到2010-12-20(约),第二期从2010年3月到年底。

所以这将包括全年,其中大部分,从03.20到12.20两倍。

答案 2 :(得分:0)

嘿谢谢大家的帮助,这似乎是我们的历史记录(来自sql server的链接数据库)的一个问题所以我会用它们解决问题。我在常规的mssql db上尝试了查询,看起来很好......