在sql server中获取一些值集

v440hwme  于 2021-08-13  发布在  Java
关注(0)|答案(2)|浏览(411)

我有一个查询,在这个查询中我需要得到每个地区的类数(类计数)。在这里只有那些有课的人。所以我需要向区政府证明它也没有课程。
我的 District 表包括25个值。我的班级覆盖率表有5个值到3个地区。我要带所有的地区去。

代码

SELECT 
    CC.DistrictId, D.DistrictName,
    COUNT(D.DistrictId) AS DistrictCount
FROM
    TBL_T_ClassCoverage CC
LEFT JOIN 
    [dbo].[TBL_M_District] D ON CC.DistrictId = D.DistrictId
WHERE 
    CC.IsActive = 1 
GROUP BY
    CC.DistrictId, D.DistrictName
ORDER BY
    DistrictId ASC
lrl1mhuk

lrl1mhuk1#

您需要以另一种方式(从地区到类)联接表,以确保输出中包含所有地区值:

SELECT D.DistrictId, D.DistrictName, COUNT(CC.DistrictId) AS DistrictCount
  FROM [dbo].[TBL_M_District] D
  LEFT JOIN TBL_T_ClassCoverage CC
  ON CC.DistrictId = D.DistrictId AND CC.IsActive = 1 
  GROUP BY D.DistrictId, D.DistrictName
  ORDER BY D.DistrictId ASC
bnl4lu3b

bnl4lu3b2#

基本上你需要 right join 不是 left join 在这里。

SELECT CC.DistrictId, D.DistrictName, Count(D.DistrictId) AS DistrictCount
FROM TBL_T_ClassCoverage CC
RIGHT JOIN [dbo].[TBL_M_District] D ON CC.DistrictId = D.DistrictId
WHERE CC.IsActive = 1 
GROUP BY CC.DistrictId, D.DistrictName
ORDER BY DistrictId ASC

相关问题