我正在针对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条记录,其中设施的现有电话号码数量与电话号码类型的数量不同(例如,有两个不同的电话号码,都列为主要电话号码)。
我希望能够生成一份详细的报告,其中列出每个设施的电话号码和电话类型,但是仅当不同的计数不同时。
是否有一种方法可以通过单个查询完成此操作?还是我需要将摘要保存到临时表中,然后再加入该临时表以获取详细信息?
答案 0 :(得分:1)
不确定dbo.Phone中存在哪些字段;但假设数字来自那里...可能需要加入类型表以获取其描述...
这使用公共表格表达式获取项目的基本列表,然后使用相关子查询以确保仅显示cte中的那些设施。
app:layout_constraintVertical_bias="parent"
这里的where子句仅表示如果原始查询(CTE)中存在FacilityID,则仅显示那些FacilityID和相关记录(107)如果我们需要来自CTE的数据,我们将加入该数据;但由于它只是限制数据,因此将其放在where子句中并使用存在可能会更有效。