也许我只是愚蠢,但出于某种原因,这是有效的,是的,它的效果很好但是我们想要添加一个带有子表的条件但是保持相同的格式。
BEGIN
SELECT
v.[id]
,v.[Vacante]
,v.[deptoId]
,v.[StatusId]
,v.[scholarYearId]
,v.[tipoVacanteId]
,v.[detalle]
,v.[createdDate]
,v.[createdBy]
,d.nombre as DeptoNombre
,s.nombre as statusNombre
,y.nombre as scholarYearNombre
,t.nombre as tipoVacanteNombre
,count(uv.id) as totalCandidatos
FROM
[dbo].[tbl_vacantes] v
LEFT JOIN
tbl_usuariosPorVacante uv on v.id = uv.vacanteId
--LEFT JOIN
-- dbo.[tbl_user] u on uv.userId=u.id
INNER JOIN
dbo.[tbl_depto] d ON d.Id = v.[deptoId]
INNER JOIN
dbo.[tbl_status] s ON s.Id = v.[statusId]
LEFT JOIN
tbl_scholarYear y ON v.scholarYearId=y.Id
LEFT JOIN
tbl_tipoVacante t ON v.tipoVacanteId=t.Id
--WHERE
-- u.progressId =3 OR u.progressId is null --Solo usuarios que ya temrinaron su proceso.
GROUP BY
v.[id]
,v.[Vacante]
,v.[deptoId]
,v.[StatusId]
,v.[scholarYearId]
,v.[tipoVacanteId]
,v.[detalle]
,v.[createdDate]
,v.[createdBy]
,d.nombre
,s.nombre
,y.nombre
,t.nombre
ORDER BY
v.id DESC
END
我们想要做的是,在totalCandidatos(计数)中保持计数,是的,但只在dbo时计算。[tbl_user]你有progressId = 3和4.从现在开始,它正在计算所有类型的progressId。
我知道,这可能是愚蠢的。但是我坚持这个。
谢谢!
答案 0 :(得分:4)
您可以使用sum(case when <condition> then 1 else 0 end)
来计算返回的符合特定条件的记录数。