我需要使用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访问数据。
答案 0 :(得分:0)
(此示例适用于SQL Server)
如果将初始结果保存在表或临时数据结构中,则可以在SQL中执行此操作。如果是子查询,则可以按前一行的速率减去行的速率。这是按日期,因此您为给定的患者/医生选择了MAX(日期),无论那个(主键?)是什么。在这种情况下,我使用“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的数据集。