Sql server 连接两个表中的数据

Sql server 连接两个表中的数据,sql-server,left-join,Sql Server,Left Join,在我的项目中,公司的客户打电话询问他们的设备。每次打电话时,它都会保存在数据库中。现在我需要知道公司在一年中每月接到多少个电话,所以我写了这个请求: SELECT COUNT(EveLngId) FROM T_Evenement where EveLngDosId = 1062 And EveLngBibId = 268 And EveTinSite = 1 And EveLngEleId <> 17432 And (EveTinParEmail is null OR EveTinP

在我的项目中,公司的客户打电话询问他们的设备。每次打电话时,它都会保存在数据库中。现在我需要知道公司在一年中每月接到多少个电话,所以我写了这个请求:

SELECT COUNT(EveLngId) FROM T_Evenement
where EveLngDosId = 1062
And EveLngBibId = 268
And EveTinSite = 1
And EveLngEleId <> 17432
And (EveTinParEmail is null OR EveTinParEmail = 0)
And (EveLngTicketTransfertId IS NULL OR EveLngTicketTransfertId = 0)
And (EveTinIncidentAnnulation is null or EveTinIncidentAnnulation=0)
And YEAR(EveDatRedaction) = 2013
group by MONTH(EveDatRedaction)
请求可以工作,但问题是当一个月的值为null时,我不显示null或0,但它会跳过它。为此,我创建了一个日历表,如下所示:

所以现在我需要把这两个表连接起来,得到每个月的值,但我可以知道如何做到这一点。有什么建议或解决方案吗?

试试这个-

;WITH ResultsCTE AS
(
    SELECT MONTH(EveDatRedaction) AS ResultMonth,
           COUNT(EveLngId) AS ResultCount 
    FROM   T_Evenement
    where  EveLngDosId = 1062
           And EveLngBibId = 268
           And EveTinSite = 1
           And EveLngEleId <> 17432
           And (EveTinParEmail is null OR EveTinParEmail = 0)
           And (EveLngTicketTransfertId IS NULL OR EveLngTicketTransfertId = 0)
           And (EveTinIncidentAnnulation is null or EveTinIncidentAnnulation=0)
           And YEAR(EveDatRedaction) = 2013
    GROUP BY MONTH(EveDatRedaction)
)
SELECT CalendarStrLibelle,ISNULL(ResultCount,0) AS ResultCount
FROM   Calendar 
       LEFT JOIN ResultsCTE 
          ON ResultMonth = CalendarLngId
SELECT  CalendarStrLibelle
    ,   ResultCount = ISNULL(cnt, 0) 
FROM dbo.Calendar c
LEFT JOIN (
    SELECT 
          [month] = MONTH(EveDatRedaction) 
        , cnt = COUNT(EveLngId) 
    FROM dbo.T_Evenement
    WHERE EveLngDosId = 1062
        AND EveLngBibId = 268
        AND EveTinSite = 1
        AND EveLngEleId <> 17432
        AND ISNULL(EveTinParEmail, 0) = 0
        AND ISNULL(EveLngTicketTransfertId, 0) = 0
        AND ISNULL(EveTinIncidentAnnulation, 0) = 0
        AND YEAR(EveDatRedaction) = 2013
    GROUP BY MONTH(EveDatRedaction)
) t ON t.[month] = c.CalendarLngId

那么你想把你的日历表加入到你的日历表中吗?“你能给我们一些来自T_Evenment的示例数据吗?”jyparask回答了我的问题,谢谢你的提问,我想下次再举更多的示例