0

私のスクリプトには、SQLクエリの結果を表示するテーブルがあります。ただし、結果を要約として使用していますが、SQLは、Where句のために許可されている戻りSQLの結果(行)の数だけページにテーブルを表示させています。つまり、3つのグループの人々が要約されている場合、テーブルは同じ情報を3回繰り返します。

この問題に対処する一般的な方法はありますか?ありがとう!

SELECT 
    Demographics.Name,
    Demographics.NDoc_Number,
    Demographics.PID_alphanumeric,
    Demographics.Company,
    Demographics.Company_Name,
    Demographics.Location,
    Demographics.Location_Name,
    Demographics.Team_CMT, 
    Demographics.Case_Manager,
    Demographics.Case_Manager_UID,
    Demographics.SiteName, 
    CareEpisodes.BGNDATE, 
    CareEpisodes.BRFA, 
    CareEpisodes.ENDDATE, 
    CareEpisodes.ERFA,
    OASIS_Improvement.BGNRPT,
    OASIS_Improvement.ENDRPT,
    ISNULL(SUM(CASE OASIS_Improvement.O_I_@Request.MooNum~
        WHEN 'NA'
        THEN 1
        ELSE 0
    END),0) AS numberImproveNA,
    ISNULL(SUM(CASE OASIS_Stabilization.O_S_@Request.MooNum~
        WHEN 'NA'
        THEN 1
        ELSE 0
    END),0) AS numberStabilizeNA,
    ISNULL(SUM(CASE OASIS_Improvement.O_I_@Request.MooNum~
        WHEN 'NA'
        THEN 0
        ELSE 1
    END),0) AS couldShowImprovement,
    ISNULL(SUM(CASE OASIS_Stabilization.O_S_@Request.MooNum~
        WHEN 'NA'
        THEN 0
        ELSE 1
    END),0) AS couldShowStabilization,
    ISNULL(COUNT(Demographics.Name),0) AS patientCount,
    ISNULL(SUM(CASE OASIS_Improvement.O_I_@Request.MooNum~
        WHEN 1
        THEN 1
        ELSE 0
    END),0) AS doShowImprovement,
    ISNULL(SUM(CASE OASIS_Stabilization.O_S_@Request.MooNum~
        WHEN 1
        THEN 1
        ELSE 0
    END),0) AS doShowStabilization

FROM 
    Demographics  
     INNER JOIN OASIS_Improvement  ON 
    Demographics.NDoc_Number = OASIS_Improvement.NDocNumber 
     INNER JOIN OASIS_Stabilization  ON 
    Demographics.NDoc_Number = OASIS_Stabilization.NDocNumber AND
        OASIS_Improvement.BGNRPT=OASIS_Stabilization.BGNRPT
     INNER JOIN CareEpisodes  ON 
    Demographics.NDoc_Number = CareEpisodes.NDocNumber AND
        OASIS_Improvement.BGNRPT=CareEpisodes.BGNRPT
WHERE
    (Demographics.Company IN (@SingleQuote.Request.companyInput~) OR '@Request.companyInput~' = '') AND
    (Demographics.Location IN (@SingleQuote.Request.locationInput~) OR '@Request.locationInput~' = '') AND
    (Demographics.Team_CMT IN (@SingleQuote.Request.teamInput~) OR '@Request.teamInput~' = '') AND
    (Demographics.Case_Manager_UID IN (@SingleQuote.Request.clinicianInput~) OR '@Request.clinicianInput~' = '') AND
    CareEpisodes.ERFA <> 6 AND
    (OASIS_Improvement.O_I_@Request.MooNum~ = 'NA' OR
    OASIS_Improvement.O_I_@Request.MooNum~ = 1 OR
    OASIS_Improvement.O_I_@Request.MooNum~ = 0) AND
    (OASIS_Stabilization.O_S_@Request.MooNum~ = 'NA' OR
    OASIS_Stabilization.O_S_@Request.MooNum~ = 0 OR
    OASIS_Stabilization.O_S_@Request.MooNum~ = 1) AND
    CareEpisodes.BGNDATE >= '@Request.FromDateInput~' AND
    CareEpisodes.ENDDATE <= '@Request.ThruDateInput~'
4

1 に答える 1

2

情報をグループ化しようとしている場合は、GROUPBYステートメントの使用を検討する必要があります。情報を要約したい場合は、GROUP BY、WITHROLLUPを見てみてください。ROLLUPを使用すると、GROUP BYで選択した値に応じて、情報をグループ化して要約できます。

于 2012-07-06T19:30:39.630 に答える