[英]SQL Querying a slowly changing dimension
我有一张桌子,上面有Staion平台以及它们何时运行以及何时关闭。 我想获取2010年1月1日至2010年1月31日之间运行的站点的数量。右侧是Im正在寻找的结果。 我用黄色突出显示了不应包含在结果中的那些内容。 电台需要按位置分组。 MAP_id是PK。
我认为应该使用的方法是逐行检查开始日期和结束日期是否在2010年1月之内。
此查询可以工作吗?
SELECT ...
FROM ...
WHERE
'2010/01/31' between startdate and
case when enddate is null then Getdate()
else enddate
end
任何帮助将被申请。
您的条件是:“在2010年1月1日至2010年1月31日之间可运行”。 我希望在查询中看到这两个日期。
这是一个重叠的时间间隔问题的示例。 这就是说该电台始于2010年1月1日或之前,结束于2010年1月31日或之后。 这是该逻辑的where
子句:
where startdate <= '2010-01-01' and
(enddate is null or enddate >= '2010-01-31');
请注意,根据是否包含端点,逻辑可能会略有不同。
您也可以这样写:
where startdate <= '2010-01-01' and
coalesce(enddate, getdate()) >= '2010-01-31');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.