繁体   English   中英

SQL 统计多个表中的记录 Group by UsedID

[英]SQL count records in from multiple tables Group by UsedID

我有一些 forms。它包含不同的 usedId 作为外键。 一个用户有多个forms,现在想看一个用户提交了多少个forms。

我想要 output:

登录 ID、FormName、NumberOfForms

Shakil -> BurnOut -> 10

沙基尔 -> CIP -> 8

Shakil -> 加热 -> 20

但起初,我需要 output。然后装修。

我正在尝试多种方法来解决它。

select  COUNT(*) as NumberOfForms  from Client_BurnOuts  b
inner join PatientPortalLogins l on l.PatientApplicationId = b.PatientApplicationId
where l.PatientApplicationId = 10
union all 

select COUNT(*) as NumberOfForms  from Client_EmergencyAssistances  b
inner join PatientPortalLogins l on l.PatientApplicationId = b.PatientApplicationId
where l.PatientApplicationId = 10
union all 

select COUNT(*) as NumberOfForms  from Client_DukeEnergyFoundations  b
inner join PatientPortalLogins l on l.PatientApplicationId = b.PatientApplicationId
where l.PatientApplicationId = 10
union all
 
select COUNT(*) as NumberOfForms  from Client_CIPEnergyCrisises  b
inner join PatientPortalLogins l on l.PatientApplicationId = b.PatientApplicationId
where l.PatientApplicationId = 10
;

另一种方式

SELECT l.LoginID, 
COUNT(cb.PatientApplicationId) as BurnOuts  ,
COUNT(ea.PatientApplicationId) as EmergencyAssistances, 
COUNT(du.PatientApplicationId) as DukeEnergyFoundations, 
COUNT(cip.PatientApplicationId) as CIP
FROM PatientPortalLogins l

inner join Client_CIPEnergyCrisises cip ON cip.PatientApplicationId = l.PatientApplicationId
inner join Client_DukeEnergyFoundations du ON du.PatientApplicationId = l.PatientApplicationId 
inner join Client_EmergencyAssistances ea ON ea.PatientApplicationId = l.PatientApplicationId 
inner join Client_BurnOuts cb ON cb.PatientApplicationId = l.PatientApplicationId 
where l.PatientApplicationId = 10
GROUP BY l.LoginID, cip.PatientApplicationId, cb.PatientApplicationId;

但我得不到正确的结果。 我一共有五张表,PatientPortalLogins表只包含用户名,usedId.....而四张表包含不同的值,
我只想看看哪个用户提交了多少页。 使用的示例1 提交 2 Client_CIPEnergyCrisises forms、1 EmergencyAssistances forms、5 DukeEnergyFoundations forms

最后,我可以解决我的问题。 如果您有多个表,那么我们可以使用它们。

select l.LoginID, 'Client_BurnOuts' as Client_BurnOuts,  COUNT(*) as NumberOfForms  
from Client_BurnOuts  b
inner join PatientPortalLogins l on l.PatientApplicationId = b.PatientApplicationId
where l.PatientApplicationId = 10
GROUP BY l.LoginID
union all 

select l.LoginID, 'Client_EmergencyAssistances' as Client_EmergencyAssistances,  COUNT(*) as NumberOfForms  
from Client_EmergencyAssistances  b
inner join PatientPortalLogins l on l.PatientApplicationId = b.PatientApplicationId
where l.PatientApplicationId = 10
GROUP BY l.LoginID
union all 

select l.LoginID, 'Client_DukeEnergyFoundations' as Client_DukeEnergyFoundations, COUNT(*) as NumberOfForms  
from Client_DukeEnergyFoundations  b
inner join PatientPortalLogins l on l.PatientApplicationId = b.PatientApplicationId
where l.PatientApplicationId = 10
GROUP BY l.LoginID
union all 

select l.LoginID, 'Client_CIPEnergyCrisises' as Client_CIPEnergyCrisises, COUNT(*) as NumberOfForms  
from Client_CIPEnergyCrisises  b
inner join PatientPortalLogins l on l.PatientApplicationId = b.PatientApplicationId
where l.PatientApplicationId = 10
GROUP BY l.LoginID
;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM