结合sql-server 2008中的查询

时间:2014-02-24 05:40:22

标签: sql-server-2008

我有2个表Ward_Master和IP_Admission,我有以下指定的这三个查询

  select Ward_ID ,ward_name,bed_strength from Ward_Master
  select * from IP_Admission where Ward_ID=1;
  SELECT M.Bed_Strength - COUNT(A.WARD_id)  as Free_Bed
  FROM IP_Admission A  
 JOIN  Ward_Master M ON A.WARD_ID = M.WARD_ID 
  WHERE (A.Status='V' OR A.Status='D') and M.Ward_ID=1 group by M.Bed_Strength;

将输出作为

 Ward_ID   Ward_Name       Bed_Strengh
   1    Labor           6
   2    GYN         6
   3    OBG         6
   4    High Risk   6
   5    PED         14
   6    PNC         14
   7    Special         11
   8    Deluxe          2
   9    OPT-M           8
   10   OPT-F           7 

   IP_NO    Ward_ID Status
   IP001    1        V
   IP002    1        O
   IP003    1        D


    Free_Bed
     4

正如您所看到的,这些查询的输出仅类似于ward_Id = 1.我需要输出类似

的输出
    Ward_ID   Ward_Name       Bed_Strengh   Free_Bed
   1    Labor           6                  4 
   2    GYN         6               //Free bed for ward_id=2
   3    OBG         6               //Free bed for ward_id=3 
   4    High Risk   6                 so on....   
   5    PED         14
   6    PNC         14
   7    Special         11
   8    Deluxe          2
   9    OPT-M           8
   10   OPT-F           7 

任何帮助表示感谢。

1 个答案:

答案 0 :(得分:0)

我不太明白你的问题,但这有帮助:

SELECT M.Ward_ID, M.Bed_Strength - ISNULL(COUNT(A.WARD_id),0)  as Free_Bed
FROM Ward_Master M 
LEFT OUTER JOIN
IP_Admission A  
ON A.WARD_ID = M.WARD_ID 
AND (A.Status='V' OR A.Status='D')
GROUP BY M.Ward_ID, M.Bed_Strength;