Select 范围基于另一列
Select range based on another column
给定一个这样的(样本)table:
PERIOD ORD DATA...
Dec16 1
Sep16 3
Aug16 4
Jul16 5
Jun16 7
May16 8
Apr16 9
Mar16 11
Feb16 12
Jan16 13
Dec15 15
Nov15 16
Oct15 17
Sep15 19
Aug15 20
Jul15 21
Jun15 23
May15 24
Apr15 25
Mar15 27
Feb15 28
Jan15 29
其中 PERIOD 是一个字符串,我将如何查询给定时间段之间的所有行,例如在 PERIOD='Mar16' 和 'Jun15'(含)之间。有没有什么方法可以利用 SQL 查询中的 ORD 列来获取值的范围?
您可以将句点转换为日期并将其用于比较。例如,某些数据库支持 to_date()
,它看起来像:
where to_date(period, 'MonYY') between to_date('Jun15', 'MonYY') and to_date('Mar16', 'MonYY')
请注意,将您的经期转换为日期的具体功能因数据库而异,问题上尚未(尚未?)指定。但这让您知道如何去做。
而且,如果您要将句点存储为字符串,则应使用 YYYY-MM 格式。这样可以正确排序并允许您使用不等式比较。
替代 Gordon,这可能会起作用,具体取决于您的 RDBMS
SELECT *
FROM thetable
WHERE ORD BETWEEN (SELECT ORD FROM thetable WHERE PERIOD ='Mar16')
AND (SELECT ORD FROM thetable WHERE PERIOD ='Jun15')
给定一个这样的(样本)table:
PERIOD ORD DATA...
Dec16 1
Sep16 3
Aug16 4
Jul16 5
Jun16 7
May16 8
Apr16 9
Mar16 11
Feb16 12
Jan16 13
Dec15 15
Nov15 16
Oct15 17
Sep15 19
Aug15 20
Jul15 21
Jun15 23
May15 24
Apr15 25
Mar15 27
Feb15 28
Jan15 29
其中 PERIOD 是一个字符串,我将如何查询给定时间段之间的所有行,例如在 PERIOD='Mar16' 和 'Jun15'(含)之间。有没有什么方法可以利用 SQL 查询中的 ORD 列来获取值的范围?
您可以将句点转换为日期并将其用于比较。例如,某些数据库支持 to_date()
,它看起来像:
where to_date(period, 'MonYY') between to_date('Jun15', 'MonYY') and to_date('Mar16', 'MonYY')
请注意,将您的经期转换为日期的具体功能因数据库而异,问题上尚未(尚未?)指定。但这让您知道如何去做。
而且,如果您要将句点存储为字符串,则应使用 YYYY-MM 格式。这样可以正确排序并允许您使用不等式比较。
替代 Gordon,这可能会起作用,具体取决于您的 RDBMS
SELECT *
FROM thetable
WHERE ORD BETWEEN (SELECT ORD FROM thetable WHERE PERIOD ='Mar16')
AND (SELECT ORD FROM thetable WHERE PERIOD ='Jun15')