2017-10-05 17 views
0

SSRSを使用して2つの日付間の薬物使用の変化率を計算する必要があります。私はSQLを使用することに慣れています。したがって、私はSSRSで苦労しています。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 

はどのようにして、2つの日付の間の薬物使用量の変化率を反映したレポートを作成するのですか? SSRSでレポートを作成する必要がありますが、変化率を反映するクエリをSSRSに書き込む方法がわかりません。

私はSSRSを通じてデータにしかアクセスできないため、SQLでクエリを作成できません。

+0

質問を明確にすることはできますか?あなたが何を望んでいるのか分かりません。 (式のヘルプ、計算フィールド、データセット) –

+0

SQLを使用する方が快適な場合は、単純なデータセットとしてデータセット内で作業するほうが簡単でしょう。 SSRS式は、データセットによって提供されるデータ(通常はSQL Serverのクエリまたはストアドプロシージャから取得されるデータ)で動作します。 –

答えて

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のデータセットとして使用します。