SQL - 选择Start Century / Year / Week& amp;结束世纪/年/周

时间:2014-03-14 14:43:57

标签: sql

我有一个包含CENT,YEAR&列的文件。 WEEK(所有整数字段)

年份为2位数年份。 CENT是一个世纪指标,多年来都是0< 2000年或1年>≥2000.WEEK是2位数周,即1 - 52

我试图选择以下内容之间的记录:

  • 来自Cent:1
  • 从年份:13
  • 从周:45
  • To Cent:1
  • 到年份:14
  • 到周:12

所以从2013年第45周到2014年第12周(包括第12周)。

为了举例,假设该文件包含从13年级第1周到第14年第52周的每周1条记录,因此:

  • CENT = 1,YEAR = 13,WEEK = 1
  • CENT = 1,YEAR = 13,WEEK = 2
  • CENT = 1,YEAR = 13,WEEK = 3
  • ...
  • ...
  • ...
  • CENT = 1,YEAR = 13,WEEK = 52
  • CENT = 1,YEAR = 14,WEEK = 1
  • ...
  • ...
  • ...
  • CENT = 1,YEAR = 14,WEEK = 52

但是,1999年这个文件的记录也可能是:

  • CENT = 0,YEAR = 99,WEEK = 1
  • CENT = 0,YEAR = 99,WEEK = 2
  • CENT = 0,YEAR = 99,WEEK = 3
  • ...
  • ...
  • ...
  • CENT = 0,YEAR = 99,WEEK = 52

我确实知道如何实现这一点,但SQL很长(可能效率不高),有没有人知道一种速记方式?

我们拥有世纪指标的原因是遗留的iSeries文件:)

我只需要一个

SELECT * FROM FILENAME WHERE (*** CENT, YEAR & WEEK are between the two sets of Cent/Year/Week ***)

由于

1 个答案:

答案 0 :(得分:2)

您可以使用此类构造(类似于下限)。这看起来很丑陋,但却让事情变得难以理解。

CENT > @centFrom
OR CENT = @centFrom AND YEAR > @yearFrom 
OR CENT = @centFrom AND YEAR = @YearFrom AND WEEK >= @weekFrom