这是一个真正的拔毛器所以任何帮助,非常感谢!
我希望能够确定:
并在Matrix中的过滤器之间使用这些新列Start_Date
和end_Date
。
注意:我知道如果这是日历月,那么这将是“相当”直截了当的。
但在这种情况下它完全不同。
请参阅图片,该图片可能有助于我正在尝试使用的上下文:
答案 0 :(得分:0)
我确信这可以使用SSRS中的表达式,但我没有时间进行调查。如果它有用,请按照以下方式在SQL中进行操作。
同样可能有更优雅的解决方案,但这就是我的想法。
我会根据您的样本再现您的数据以及更多的日期,以便进行测试。
DECLARE @t TABLE(Custom_Date date, Custom_Day int)
INSERT INTO @t VALUES
('2017-10-26', 28),
('2017-10-27', 29),
('2017-10-28', 30),
('2017-10-29', 1),
('2017-10-30', 2),
('2017-10-31', 3),
('2017-11-01', 4),
('2017-11-02', 5),
('2017-11-03', 6),
('2017-11-04', 7),
('2017-11-05', 8),
('2017-11-06', 9),
('2017-11-07', 10),
('2017-11-08', 11),
('2017-11-09', 12),
('2017-11-10', 13),
('2017-11-11', 14),
('2017-11-12', 15),
('2017-11-13', 16),
('2017-11-14', 17),
('2017-11-15', 18),
('2017-11-16', 19),
('2017-11-17', 20),
('2017-11-18', 21),
('2017-11-19', 22),
('2017-11-20', 23),
('2017-11-21', 24),
('2017-11-22', 25),
('2017-11-23', 26),
('2017-11-24', 27),
('2017-11-25', 28),
('2017-11-26', 1),
('2017-11-27', 2),
('2017-11-28', 3)
然后两个查询来提取正确的日期,如果需要,可以将它们组合在一起。
SELECT MAX(Custom_Date) FROM @t WHERE Custom_Date < getdate() AND custom_day = 1
SELECT MAX(Custom_Date)
FROM @t
WHERE
Custom_Date > getdate()
AND DATEDIFF(d, getdate(), Custom_Date)<=31
AND Custom_Day = (
SELECT MAX(custom_day)
FROM @t
WHERE
Custom_Date > getdate()
AND datediff(d, getdate(), Custom_Date)<=31
)
仅供参考:如果您在日期表中有自定义月份/期间和年份,那么这将更加容易,因为您可以查看custom_day
1和max(custom_day)
自定义月份和年份与当前日期相同。