我有一个查询,可以根据需要返回所有内容。但是我不想重复。已经尝试过“分组依据”,但得到的结果完全相同。
select distinct eq.id as id, tipo.descripcion as tipoId, eq.tagId, eq.periodoId, eq.asignado, op.numOpcion as empleadoId
from Empleados emp inner join dbo.Opciones op ON op.empleadoId = emp.id
inner join dbo.TipoEquipo tipo ON tipo.id = op.tipoEquipoId
inner join dbo.Equipos eq ON eq.tipoId = tipo.id
where emp.Id = 1
order by op.numOpcion
我明白了。
id tipoId tagId periodoId asignado empleadoId
1 Macbook tag1 1 Si 1
3 iMac tag3 1 Si 2
5 Dell Lap OP tag5 1 No 3
6 Dell Lap OP tag6 1 No 3
试图获得唯一性(empleadoId的第一个值)。这样。
id tipoId tagId periodoId asignado empleadoId
1 Macbook tag1 1 Si 1
3 iMac tag3 1 Si 2
5 Dell Lap OP tag5 1 No 3
谢谢。
答案 0 :(得分:0)
由于行eq.id
具有唯一的ID,所以您得到重复的行,因此可以将其删除或使用row_number()
:
select top (1) with ties eq.id as id, tipo.descripcion as tipoId, eq.tagId, eq.periodoId, eq.asignado, op.numOpcion as empleadoId
from Empleados emp inner join
dbo.Opciones op
ON op.empleadoId = emp.id inner join
dbo.TipoEquipo tipo
ON tipo.id = op.tipoEquipoId inner join
dbo.Equipos eq
ON eq.tipoId = tipo.id
where emp.Id = 1
order by row_number() over (partition by tipo.descripcion, eq.periodoId, eq.asignado, op.numOpcion order by eq.id desc);
答案 1 :(得分:0)
在Dell
中使用运算符distinct
时,eq.id
有两行。
因此您可以:
select
tipo.descripcion as tipoId
, eq.tagId
, eq.periodoId
, eq.asignado
, op.numOpcion as empleadoId
from Empleados emp inner join dbo.Opciones op ON op.empleadoId = emp.id
inner join dbo.TipoEquipo tipo ON tipo.id = op.tipoEquipoId
inner join dbo.Equipos eq ON eq.tipoId = tipo.id
where emp.Id = 1
group by tipo.descripcion
, eq.tagId
, eq.periodoId
, eq.asignado
, op.numOpcion
order by op.numOpcion
或者只使用子查询,然后使用GROUP BY
而不使用id
:
select q.tipoId, q.tagId, q.periodoId, q.asignado, q.empleadoId
from
(
select
distinct eq.id as id
, tipo.descripcion as tipoId
, eq.tagId
, eq.periodoId,
eq.asignado, op.numOpcion as empleadoId
from Empleados emp inner join dbo.Opciones op ON op.empleadoId = emp.id
inner join dbo.TipoEquipo tipo ON tipo.id = op.tipoEquipoId
inner join dbo.Equipos eq ON eq.tipoId = tipo.id
where emp.Id = 1
)q
group by q.tipoId, q.tagId, q.periodoId, q.asignado, q.empleadoId
order by q.empleadoId