我想在ssrs上显示当前月份,年初至今和上一年至今

时间:2020-09-29 14:53:12

标签: sql reporting-services

Data Presentation

想在sql视图上计算年初至今的日期和上一年至今的当前日期,以便简单地在ssrs上进行数据表示,以使其运行更快。有没有一种方法可以编写可以执行此操作的视图?

1 个答案:

答案 0 :(得分:0)

忽略了一个事实,我认为您在以前的YTD摘要编号中有一些错误。

我按照您的示例重新创建了数据

CREATE TABLE #t (TransDate date, Customer varchar(30), Amount float)

INSERT INTO #t VALUES
('2020-09-21', 'Customer 1', 200),
('2020-09-22', 'Customer 2', 300),
('2020-08-03', 'Customer 2', 450),
('2020-08-04', 'Customer 1', 1200),
('2019-09-14', 'Customer 1', 859),
('2019-02-05', 'Customer 2', 230),
('2019-07-26', 'Customer 2', 910),
('2019-11-17', 'Customer 1', 820)

然后,下面的语句将满足您的需求。这不是最优雅的方法,但是它很容易转换为视图,这是我当时所能想到的一切。

SELECT 
    m.Customer
    , m.MTD as [Current Month]
    , y.YTD as [Current YTD]
    , p.YTD as [Previous YTD]
FROM (
        SELECT Customer, Yr = Year(TransDate), Mn = MONTH(TransDate), MTD = SUM(Amount) FROM #t t WHERE MONTH(TransDate) = MONTH(GetDate()) and YEAR(TransDate) = YEAR(GetDate())
            GROUP by Customer, YEAR(TransDate), MONTH(TransDate)
    ) m 
    JOIN (SELECT Customer, Yr = YEAR(TransDate), YTD = SUM(Amount) FROM #t t  GROUP by Customer,  YEAR(TransDate)) y on m.Customer =y.Customer and m.Yr = y.Yr
    JOIN (SELECT Customer, Yr = YEAR(TransDate), YTD = SUM(Amount) FROM #t t  GROUP by Customer,  YEAR(TransDate)) p on y.Customer =p.Customer and y.Yr = p.Yr + 1

这给出了以下结果(与您的示例不匹配,但我认为您的示例不正确)

enter image description here