用于计数记录的SQL脚本根据特定条件并返回计数

时间:2015-05-28 21:57:50

标签: mysql sql-server database

我试图在我的数据库中计算具有特定条件的记录,以最终生成一些统计报告。

My Tables and Fields are:
1- Import Table:bed_ID, unit_ID, mrn, acccount_num, sex, service_ID
2- Beds: bed_ID, unit_ID, bed_type_ID
3- Bed_Type: bed_type_ID, bed_type_description
4- Unit: unit_ID, unit_common_name, program_ID, total_beds...other fields that don't apply.
5- Service: service_ID, service_common_name, program_ID
6- Program: program_ID, program_common_name 

我想创建一个查询,它会为每个单元的每个Bed_Type_Description计算一次。我也希望得到每个单位的床位总数并计算床位数,但我确定如果能得到这方面的帮助,我可以弄明白。

Unit  Regular_Bed   Escalation_Bed   Transfer_Bed   Bassinet
-------------------------------------------------------------
Unit1    10               4                2           2
Unit2    12               2                2           0
etc...
etc...

这就是我所拥有的,但它只涉及一个特定单位:

SELECT 
    COUNT(dw_test.dbo.Bed_Type.bed_type_description) as 'Total Number of Beds'
FROM 
    dw_test.dbo.MediTechReport_Bed_Board,
    --dw_test.dbo.Unit,
    dw_test.dbo.Beds, 
    dw_test.dbo.Bed_Type
WHERE 
    dw_test.dbo.MediTechReport_Bed_Board.bed_ID = dw_test.dbo.Beds.bed_ID
--AND
--  dw_test.dbo.MediTechReport_Bed_Board.unit_ID =     dw_test.dbo.Unit.unit_ID
AND 
    dw_test.dbo.Beds.bed_type_ID = dw_test.dbo.Bed_Type.bed_type_ID
AND 
    dw_test.dbo.MediTechReport_Bed_Board.unit_ID = 'KA2MED'
AND 
    dw_test.dbo.Bed_Type.bed_type_description = 'Regular';

您会注意到与Unit相关的几行被注释掉了。通过这些注释,我得到了返回值' 5'记录是正确的。如果我删除评论以包含这些行,则返回值' 0'这对我没有意义。如果有人能向我解释这一点,那也很棒。 我的SQL非常生疏,已经有一段时间了。非常感谢任何帮助。再次感谢你的帮助。

1 个答案:

答案 0 :(得分:1)

也许是这样的?

select t.bed_type_description, COUNT(t.bed_type_description) as 'Total Number Of Beds' 
from import As I inner join Beds as b on i.bed_Id = b.bed_Id 
inner join Unit as u on i.unit_Id = u.unit_Id 
inner join Bed_Type as t on b.bed_type_Id = t.bed_type_Id 
where u.unit_Id = 'KA2MED'
group by t.bed_type_description