[英]SQL Query - Help Getting sum of records in a Group
我有下表。
Program Table -
prog_ID,
prog_Name
Unit Table -
unit_ID,
unit_name,
prog_ID
max-beds
max-budgeted-beds
max-unbudgeted-beds
max-escalation-beds
Import_Data Table -
bed_ID,
unit_ID
Bed Table -
bed_ID,
bed_type_ID
Bed Type Table -
bed_type_ID,
bed_type
我正在尝试编写一个查询,该查询将为我提供每个程序中的床总数。
例
Program | Bed Count
-------------------
MED 30
REH 25
SUR 36
我有一个查询,可为我提供每个单元的所有床铺,但我想将其深入到程序中。 由于某种原因,我只是对此空白。
在此先感谢您的协助!
我试图确定以下内容作为我的输出中的列标题:
Occupied Beds
--Total Occupied Beds
(SUM(CASE WHEN Bed_Type.bed_type_description = 'Regular' THEN 1 ELSE 0 END)) As 'Total Occupied'
Budgeted Beds
--OCCUPIED BUDGETED BEDS
(SUM WHEN < MAX_BUDGETED),(CASE WHEN (SUM (CASE WHEN Bed_Type.bed_type_description = 'Regular' THEN 1 ELSE 0 END)) < UNIT.unit_beds_max_budgeted THEN (SUM (CASE WHEN Bed_Type.bed_type_description = 'Regular' THEN 1 ELSE 0 END)) ELSE Unit.unit_beds_max_budgeted END) AS 'Occupied Budgeted Beds'
Unbudgeted Beds
--OCCUPIED UNBUDGETED BEDS
, (CASE WHEN (SUM (CASE WHEN Bed_Type.bed_type_description = 'Regular' THEN 1 ELSE 0 END)) > UNIT.unit_beds_max_budgeted THEN Unit.unit_beds_max_unbudgeted + Unit.unit_beds_max_budgeted - (SUM (CASE WHEN Bed_Type.bed_type_description = 'Regular' THEN 1 ELSE 0 END)) ELSE 0 END) AS 'Occupied Unbudgeted Beds'
我在这里围绕对“ Unit.unit_beds_max_budgeted”的引用出现错误,我不确定为什么。 我在另一个有效的查询中使用了此逻辑,但是输出给了我每个这样的单位:
Program Unit Occupied_Beds Budgeted_Beds Unbudgeted_Beds
---------------------------------------------------------------
MED A2 44 42 2
MED A3 34 32 2
CCC B2 44 42 2
CCC B3 34 32 2
但是,我要输出的是将MED和CCC作为具有值汇总的一行(并排除单元名称)。
非常感谢任何帮助,为此我不禁感到震惊,我觉得这真的很容易,但我不明白。 我是否缺少创建链接的必填字段? 提前致谢。
一系列的连接将使您到达那里。 您不需要一直加入Bed,因为Import_Data上面带有bed_id,除非您需要其他信息。
SELECT P.prog_Name AS 'Program', COUNT(I.bed_ID) AS BedCount
FROM Import_Data I
INNER JOIN Unit U
ON I.unit_ID = U.unit_ID
INNER JOIN Program P
ON U.prog_ID = P.prog_ID
GROUP BY P.prog_Name
如果要按床型计算
SELECT BT.bed_type AS 'BedType', COUNT(I.bed_ID) AS BedCount
FROM Import_Data I
INNER JOIN Unit U
ON I.unit_ID = U.unit_ID
INNER JOIN Program P
ON U.prog_ID = P.prog_ID
INNER JOIN Bed B
ON I.bed_ID = B.bed_ID
INNER JOIN Bed_Type BT
ON B.bed_type_ID = BT.bed_type_ID
GROUP BY BT.bed_type
select p.prog_ID as Program, Count(*) as BedCount
from Program p
inner join unit u on p.prog_ID = u.prog_ID
inner join Import_Data d on u.unit_ID = d.unit_ID
inner join Bed b on d.bed_ID = b.bed_ID
Group By p.prog_ID
不运行此测试,您可能需要将count(*)更改为count(b.bed_ID)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.