Рассчитать скорость изменения в SSRS

Мне нужно рассчитать скорость изменения употребления наркотиков между двумя датами, используя SSRS. Я привык к использованию SQL, поэтому мне сложно работать с SSRS.

У меня есть следующая информация:

                             Avg_Alcohol_Use_Month   Avg_Drug_Use_Month 
First_interview_Date              1.63%                    1.34%
      1/30/2017

Followup_interview_date           2.58%                     .80%
      6/30/2017

Как мне создать отчет, который отражает скорость изменения употребления наркотиков между двумя датами? Мне нужно создать отчет в SSRS, но я не знаю, как написать запрос в SSRS, который будет отражать скорость изменения.

Я не могу создать запрос в SQL, потому что у меня есть доступ к данным только через SSRS.

1 ответ

(Этот пример для SQL Server)

Вы можете сделать это в SQL, если сохраните исходные результаты в виде таблицы или временной структуры данных. Если вы выполняете подзапрос, вы можете вычесть ставки линии на скорость предыдущей строки. Это по дате, поэтому вы выбрали МАКС (дата) для данного пациента / врача, что бы это ни было (первичный ключ?). В этом случае я использовал "PatientID" для идентификации пациента. Увидеть ниже:

--Assume your values are saved in a table or other temp table
DECLARE @tmp TABLE (PatientID int, Interview_Date date, Avg_Alcohol_Use_Month decimal (4,2), Avg_Drug_Use_Month decimal (4,2))
INSERT INTO @tmp 
VALUES
 (1, '2017-01-30', 1.63, 1.34)
,(2, '2017-06-30', 2.58, 0.80)
,(1, '2017-03-01', 1.54, 1.23)
,(1, '2017-07-02', 3.21, 0.20)
,(2, '2017-08-23', 2.10, 4.52)

SELECT PatientID
      ,Interview_Date
      ,Avg_Alcohol_Use_Month
      ,Avg_Drug_Use_Month
      ,Avg_Alcohol_Use_Month
       -
       (SELECT Avg_Alcohol_Use_Month
          FROM @tmp T2
         WHERE T2.PatientID = T1.PatientID
           AND T2.Interview_Date = (SELECT MAX(Interview_Date) 
                                      FROM @tmp T3
                                     WHERE T3.Interview_Date < T1.Interview_Date
                                       AND T3.PatientID = T1.PatientID
                                       -- or whatever PK that makes the row unique for the patient.
                                   )
       ) AS [Alcohol Use Rate change]
      ,Avg_Drug_Use_Month
       -
       (SELECT Avg_Drug_Use_Month
          FROM @tmp T2
         WHERE T2.PatientID = T1.PatientID
           AND T2.Interview_Date = (SELECT MAX(Interview_Date) 
                                      FROM @tmp T3
                                     WHERE T3.Interview_Date < T1.Interview_Date
                                       AND T3.PatientID = T1.PatientID
                                       -- or whatever PK makes the row unique for the patient.
                                   )
       ) AS [Drug Use Rate change]
  FROM @tmp T1
ORDER BY PatientID, Interview_Date

Используйте такой запрос как набор данных для SSRS.

Другие вопросы по тегам