Sql 选择查询连接选择前1名

Sql 选择查询连接选择前1名,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我这里有三张表:DinasHoHeader,DinasHoDetail和员工 首先我有这个问题 select a.KodeDinasHeader,c.Nip,DepartmentCode from DinasHoHeader a left join DinasHoDetail b on a.KodeDinasHeader = b.KodeDinasHeader left join employee c on b.Nip = c.Nip where DepartmentCode = 'IT'

我这里有三张表:
DinasHoHeader
DinasHoDetail
员工

首先我有这个问题

select a.KodeDinasHeader,c.Nip,DepartmentCode 
from DinasHoHeader a 
left join DinasHoDetail b on a.KodeDinasHeader = b.KodeDinasHeader 
left join employee c on b.Nip = c.Nip
where DepartmentCode = 'IT'
我得到了这个结果

KodeDinasHeader   Nip        DepartmentCode
DN0000007       1501971           IT
DN0000007       1411517           IT
正如您所看到的,我得到了重复的
KodeDinasHeader
。我知道这是因为我有不同的
Nip
。因为我只想显示
KodeDinasHeader
DepartmentCode
。我正在尝试将我的查询更改为此

SELECT a.KodeDinasHeader,DepartmentCode From DinasHoHeader a 
left join (
select TOP 1 * from DinasHoDetail
) b on a.KodeDinasHeader = b.KodeDinasHeader
left join employee c on b.Nip = c.Nip
where c.DepartmentCode = 'IT'
我得到的结果是空的。我怎样才能做到这一点

KodeDinasHeader     DepartmentCode
    DN0000007            IT
试试这个:

select DISTINCT a.KodeDinasHeader,DepartmentCode 
from DinasHoHeader a 
left join DinasHoDetail b on a.KodeDinasHeader = b.KodeDinasHeader 
left join employee c on b.Nip = c.Nip
where DepartmentCode = 'IT'
注意,我已经添加了DISTINCT,并从选择列表中删除了Nip列。

尝试以下操作:

select DISTINCT a.KodeDinasHeader,DepartmentCode 
from DinasHoHeader a 
left join DinasHoDetail b on a.KodeDinasHeader = b.KodeDinasHeader 
left join employee c on b.Nip = c.Nip
where DepartmentCode = 'IT'

注意,我已经添加了DISTINCT,并从选择列表中删除了Nip列。

像这样重写您的查询。请注意,我添加了一个TOP 1,这样您就不需要删除任何列。但是如果你不需要“Nip”列,你可以删除它

select TOP 1 a.KodeDinasHeader,c.Nip,DepartmentCode 
from DinasHoHeader a 
left join DinasHoDetail b on a.KodeDinasHeader = b.KodeDinasHeader 
left join employee c on b.Nip = c.Nip
where DepartmentCode = 'IT

像这样重写您的查询。请注意,我添加了一个TOP 1,这样您就不需要删除任何列。但是如果你不需要“Nip”列,你可以删除它

select TOP 1 a.KodeDinasHeader,c.Nip,DepartmentCode 
from DinasHoHeader a 
left join DinasHoDetail b on a.KodeDinasHeader = b.KodeDinasHeader 
left join employee c on b.Nip = c.Nip
where DepartmentCode = 'IT

当您不需要nip时,为什么要加入表employee? Nothing表示部门代码属于哪个表

这个呢,

declare @DeptCode varchar(50)='IT'
select a.KodeDinasHeader,@DeptCode DepartmentCode 
from DinasHoHeader a 
left join DinasHoDetail b on a.KodeDinasHeader = b.KodeDinasHeader -- or inner join
where DepartmentCode = @DeptCode

当您不需要nip时,为什么要加入表employee? Nothing表示部门代码属于哪个表

这个呢,

declare @DeptCode varchar(50)='IT'
select a.KodeDinasHeader,@DeptCode DepartmentCode 
from DinasHoHeader a 
left join DinasHoDetail b on a.KodeDinasHeader = b.KodeDinasHeader -- or inner join
where DepartmentCode = @DeptCode

你想用这个做什么?你想要什么结果?你想用这个做什么?你想忘记什么结果。谢谢。没问题,那你能接受答案吗?谢谢。:)我忘了清楚。谢谢。没问题,那你能接受答案吗?谢谢。:)