【问题标题】:SQL Script for Counting Records based on specific criteria and returning the Counts用于根据特定条件计算记录并返回计数的 SQL 脚本
【发布时间】:2015-05-29 10:23:11
【问题描述】:

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

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 很生疏,已经有一段时间了。非常感谢任何帮助。再次提前感谢您的帮助。

【问题讨论】:

  • 我想我可能已经开始找到解决方案了。这是我目前所处的位置,返回值列出了每个单元以及相应的总床位数。选择 dw_test.dbo.MediTechReport_Bed_Board.unit_ID, count() as '# of Beds by Unit' from dw_test.dbo.MediTechReport_Bed_Board group by dw_test.dbo.MediTechReport_Bed_Board.unit_ID order by COUNT();需要按床型整理。
  • 当我尝试合并 Bed_Type 时,它​​不起作用。另外,为什么我会通过在 From 子句中添加 1 个额外的表来获得不同的数字?
  • 我应该在最后添加一个 Union 以允许我的脚本自行构建并为我提供所需的输出吗?

标签: mysql sql-server database


【解决方案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 

【讨论】:

  • 太好了,非常感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-02
  • 2013-07-22
  • 1970-01-01
  • 1970-01-01
  • 2021-06-21
  • 1970-01-01
  • 2011-09-26
相关资源
最近更新 更多