Sql计数记录

时间:2014-05-18 12:48:33

标签: sql sql-server

这是我的查询atm

select  Especialidade,Seguradora as 'Plano de Saúde',CodConsulta
from [dbo].[Seguro]
inner join [dbo].[FichaPaciente] on [dbo].[Seguro].[CodFichaPaciente]=[dbo].[FichaPaciente].[CodFichaPaciente]
inner join [dbo].[Consulta] on [dbo].[Consulta].[CodFichaPaciente]=[dbo].[FichaPaciente].CodFichaPaciente
inner join [dbo].[Medico] on [dbo].[Consulta].CodMedico = [dbo].[Medico].CodMedico 
inner join [dbo].[Especialidade] on [dbo].[Medico].CodEspecialidade=[dbo].Especialidade.CodEspecialidade
where seguradora = 'Médis'
order by especialidade

这是当前的输出:

Especialidade       plano saude codconsulta
Cardiologia            Médis         4
Cardiologia            Médis         6
Clinica Geral          Médis         1

这就是我想要输出的方式:

Especialidade       plano saude  counted records 
Cardiologia            Médis         2
Clinica Geral          Médis         1

一直试着这几个小时不能找到答案,如果有人可以帮我一把,试过计数,但输出将是medis上的总数,我希望总数来自especialidade

1 个答案:

答案 0 :(得分:2)

使用聚合函数COUNT()GROUP BY子句。

试试这个:

select  Especialidade,Seguradora as 'Plano de Saúde',Count(*) as CountedRecords
from [dbo].[Seguro]
inner join [dbo].[FichaPaciente] on [dbo].[Seguro].[CodFichaPaciente]=[dbo].[FichaPaciente].[CodFichaPaciente]
inner join [dbo].[Consulta] on [dbo].[Consulta].[CodFichaPaciente]=[dbo].[FichaPaciente].CodFichaPaciente
inner join [dbo].[Medico] on [dbo].[Consulta].CodMedico = [dbo].[Medico].CodMedico 
inner join [dbo].[Especialidade] on [dbo].[Medico].CodEspecialidade=[dbo].Especialidade.CodEspecialidade
where seguradora = 'Médis'
group by Especialidade,Seguradora
order by especialidade

详细了解COUNT() here