[英]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.