使用SQL合并详细和汇总的结果

时间:2019-05-21 20:27:14

标签: sql-server

我正在针对SQL Server数据库开发报告。使用此处显示的查询...

SELECT
f.FacilityID as 'FID', 
COUNT (DISTINCT f.PhoneTypeID) as 'Ptypes', 
COUNT (DISTINCT f.PhoneID) as 'Pnumbers'
from dbo.FacilityPhones as f
inner join 
     dbo.Phones as ph
     f.PhoneID = ph.PhoneID
group by f.FacilityID 
having COUNT(DISTINCT f.PhoneTypeID)<>COUNT(DISTINCT f.PhoneId);

...我确定了107条记录,其中设施的现有电话号码数量与电话号码类型的数量不同(例如,有两个不同的电话号码,都列为主要电话号码)。
query results

我希望能够生成一份详细的报告,其中列出每个设施的电话号码和电话类型,但是仅当不同的计数不同时。

desired results

是否有一种方法可以通过单个查询完成此操作?还是我需要将摘要保存到临时表中,然后再加入该临时表以获取详细信息?

1 个答案:

答案 0 :(得分:1)

不确定dbo.Phone中存在哪些字段;但假设数字来自那里...可能需要加入类型表以获取其描述...

这使用公共表格表达式获取项目的基本列表,然后使用相关子查询以确保仅显示cte中的那些设施。

app:layout_constraintVertical_bias="parent"

这里的where子句仅表示如果原始查询(CTE)中存在FacilityID,则仅显示那些FacilityID和相关记录(107)如果我们需要来自CTE的数据,我们将加入该数据;但由于它只是限制数据,因此将其放在where子句中并使用存在可能会更有效。