簡體   English   中英

T-SQL查詢不會為總和返回0值

[英]T-SQL Query will not return 0 value for a Sum

我有一個查詢,正在計算葯物的治療天數。 我希望有0個值來顯示沒有數據的月份。 當前,如果Sum為0,查詢將不返回任何記錄。似乎無法弄清楚。 請參閱下面的查詢:

如果我要注釋掉與DOT_ALL表相關的標識符以及Where子句,我將獲得60行,過去5年中,每個月1行。 但是,在其他情況下,由於在2016年8月,2016年4月和2015年1月沒有DOT,因此我在Where子句中只能獲得57種葯物。

提前致謝。

----------------------------------------------------------------------------

SELECT
    AMS.[Medication Name]
    , SUM(AMS.DOT) AS DOT
    ,  PD.[Patient Days]
    , PD.[Month_Name]
    , PD.[Fiscal_Month]
    , PD.[Accounting_Year]
    , PD.[Year]

FROM
    DW_PROD.dbo.Patient_Days_By_Month PD 
    Left JOIN [DW_PROD].[dbo].[DOTS_All] AMS ON (PD.Month_Name = AMS.Month AND PD.Year = AMS.Year)

WHERE
    [Medication Name] = 'CEFUROXIME'

GROUP BY
    AMS.[Medication Name]
    , PD.[Patient Days]
    , PD.[Month_Name]
    , PD.[Fiscal_Month]
    , PD.[Accounting_Year]
    , PD.[Year]

ORDER BY
    ACCOUNTING_YEAR
    ,FISCAL_MONTH

假設Patient_Days_By_Month已經是某種日歷,這可能是最便宜的解決方案。

SELECT
    'CEFUROXIME' AS [Medication Name],
    SUM(AMS.DOT) AS DOT,
    PD.[Patient Days],
    PD.[Month_Name],
    PD.[Fiscal_Month],
    PD.[Accounting_Year],
    PD.[Year]
FROM DW_PROD.dbo.Patient_Days_By_Month PD 
LEFT JOIN [DW_PROD].[dbo].[DOTS_All] AMS 
    ON PD.Month_Name = AMS.Month 
    AND PD.Year = AMS.Year
    AND [Medication Name] = 'CEFUROXIME'
GROUP BY
    PD.[Patient Days],
    PD.[Month_Name],
    PD.[Fiscal_Month],
    PD.[Accounting_Year],
    PD.[Year]
ORDER BY
    PD.ACCOUNTING_YEAR,
    PD.FISCAL_MONTH

JOIN條件不需要引用其他表中的列,它們還可以包含常量

葯物名稱最初在WHERE子句中受到限制-從結果集中刪除了所有非頭孢呋辛記錄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM