试图计算三个不同表格

时间:2018-01-24 06:04:04

标签: sql sql-server join

主表

SerNo   HospitalId  CityId
1       1           1
2       1           1
3       2           2
4       3           2
5       1           1

HospitalMaster

HospitalId  HospitalName
1           ABC
2           XYZ

CityMaster

CityId      City
1           Delhi
2           Bombay

结果 我需要这样的东西

City    TotalHospital
Delhi   1
Bombay  2

我尝试加入表格,但我不断得到列的总行而不是医院。 谢谢。

5 个答案:

答案 0 :(得分:1)

将城市主表连接到子查询,该子查询查找每个城市的医院数。请注意,我们只统计不同的医院,因为医院城市关系可能在主表中出现不止一次。

SELECT t1.City, COALESCE(t2.cnt, 0) AS TotalHospital
FROM CityMaster t1
LEFT JOIN
(
    SELECT CityId, COUNT(DISTINCT HospitalId) cnt
    FROM Master
    GROUP BY CityID
) t2
    ON t1.CityId = t2.CityId;

enter image description here

Demo

答案 1 :(得分:0)

您可以申请join

select M.City,count(distinct M.HospitalId) from CityMaster C inner join Master M ON C.CityId = M.CityId
group by M.City

答案 2 :(得分:0)

试试这个:

SELECT C.City,COUNT(DISTINCT HospitalID)TotalHospital 
FROM CityMaster C
JOIN Master_table M ON M.CityId=C.CityId
GROUP BY C.City

答案 3 :(得分:0)

您可以使用JOIN来完成 只需用表名替换#city,#hospital,#table。

select C.City,T.CityId from #city C,#hosp H,#table T WHERE T.CityId = C.CityId AND T.HospitalId = H.HospitalId Group by C.City,T.CityId

答案 4 :(得分:0)

由于我们需要城市名称和计数,我们可以通过加入城市主人和主表来获得。

spch(i,match)
  {
    alert(i);
    alert(match);
  }