[英]Show Null Values in Count Statement - SQL Server
我正在開發銷售報告,並嘗試選擇銷售人員在一周內完成的活動計數,並且想要顯示所有活動,無論他是否在表中完成了該活動或否。我使用的是左側聯接或完全聯接,但未顯示。 以下是表格的說明
Table 1: Activity Types - ACT_TYPE_ID ,ACT_TYPE_Desc
Table 2: Activity Details - ACT_TYPE_ID, ACT_TYPE_Text
我想顯示如下:
類型計數
Sales Call - 3
Phone Call 0
Meeting Outside 9
以下是我的select語句,但未返回必需的內容,僅顯示創建的活動:
Select ACT_TYPE_Desc as [Activity Type] , Count(CR031_DIARY_TEXT) as Count
From ACT_TYPES AT Join ACT_Details AD
On AT.DRY_TRC_TYPE = Ad.ACT_TYPE
Group By ACT_TYPE_Desc
這個解決方案幾乎可以用,但是它沒有顯示未分配的活動。是否有任何方法可以包含這些活動,我已經使用了Left和full join
如果您需要更多信息,請告訴我。
感謝名單
您可以在下面嘗試
Select ACT_TYPE_Desc as [Activity Type] , Count(CR031_DIARY_TEXT) as Count
From ACT_TYPES AT left Join ACT_Details AD
On AT.DRY_TRC_TYPE = Ad.ACT_TYPE
Group By ACT_TYPE_Desc
使用左ACT_Details
,並對ACT_Details
表中的一列進行計數,以將所有記錄包括在內,甚至包括NULL
:
SELECT
AT.ACT_TYPE_Desc AS [Activity Type],
COUNT(AD.ACT_TYPE) AS cnt
FROM ACT_TYPES AT
LEFT JOIN ACT_Details AD
ON AT.DRY_TRC_TYPE = AD.ACT_TYPE AND <restriction on time>
GROUP BY
AT.ACT_TYPE_Desc;
注意<restriction on time>
:
如果您需要在ACT_Details
表上添加任何限制,則將它們放置在ACT_Details
的ON
子句中。 ACT_TYPES
表的限制可能在WHERE
子句中。
嘗試這樣:
Select COALESCE(ACT_TYPE_Desc, 'Empty') as [Activity Type] ,
COALESCE(Count(CR031_DIARY_TEXT), 0) as Count
From ACT_TYPES AT LEFT OUTER Join
ACT_Details AD
On AT.DRY_TRC_TYPE = Ad.ACT_TYPE
Group By CR774_DRY_TRC_DESC
如果值為null,則Coalesce函數將返回0。 注意:返回值(在這種情況下為“空”)取決於返回值。 它可以是字符串或日期,也可以是任何其他類型,具體取決於列的類型。
我認為最好的方法是使用左外部聯接,在左外部聯接中,如果左行沒有與右表對應的行,則右表的聯接中將存在左表,在右聯接表為null,這與內部聯接(您的聯接)不同。這是左聯接https://www.w3schools.com/sql/sql_join_left.asp的文檔,這是內部聯接https://的文檔www.w3schools.com/sql/sql_join_inner.asp
Select ACT_TYPE_Desc as [Activity Type] , Count(CR031_DIARY_TEXT) as Count
From ACT_TYPES AT LEFT Join ACT_Details AD
On AT.DRY_TRC_TYPE = Ad.ACT_TYPE
Group By ACT_TYPE_Desc
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.