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