我有4张桌子
Table1 : Employeetab
Employeeid EmployeeName
1 xyz
2 abc
3 mno
4 pqr
Table2 : PurchaseRequesttab
PRID Employeeid PRNR
1 1 pr1
Table3 : Statustab
StatusID Statusmsg
1 approve by manager
2 approve by CC manager
3 approve by designer
4 approve by BU head
Table4 : ApprovalStatustab
PRID StatusID Employeeid ApprovalDate
1 1 3 jan 1 2015
1 2 3 jan 3 2015
1 4 4 Jan 5 2015
结果应为
PRNR EmployeeName Statusmsg
pr1 mno approve by CC manager
以下是我的查询,它提供了重复的
Select
distinct P.PRNR, EmployeeName, Statusmsg
from Employeetab as E
inner join PurchaseRequesttab AS P ON E. Employeeid = p.Employeeid
inner join ApprovalStatustab as A ON P. PRID = A. PRID
inner join Statustab as S on A. StatusID = S. StatusID
如何在结果集中获取唯一记录,编辑结果:)
答案 0 :(得分:1)
您的数据与您的条目和表格结构不匹配。
1. ApprovalStatustab A and PurchaseRequesttab as P - P.PRID = A.PRID mismatch entry as above.
以下是您的示例查询,我发表评论并添加一些条目,以便更好地了解您的错误。
declare @Employeetab table(Employeeid int, EmployeeName varchar(50))
declare @PurchaseRequesttab table(PRID int,Employeeid int, PRNR varchar(50) )
declare @Statustab table(StatusID int, Statusmsg varchar(50) )
declare @ApprovalStatustab table(PRID int, StatusID int, Employeeid int, ApprovalDate varchar(50) )
insert into @Employeetab values (1,'xyz'),(2,'abc'),(3,'mno'),(4,'pqr')
insert into @PurchaseRequesttab values (1,1,'pr1')
, (2,3,'pr3') --this I added to get the result
insert into @Statustab values (1,'approve by manager'),(2,'approve by CC manager'),(3,'approve by designer'),(4,'approve by BU head')
insert into @ApprovalStatustab values (1,1,3,'jan 1 2015'),(1,2,3,'jan 3 2015'),(1,4,4,'jan 5 2015')
,(2,2,3,'jan 5 2015') --this I added to get the result
Select
distinct
P.PRNR,
EmployeeName
,Statusmsg
from @Employeetab as E
inner join @PurchaseRequesttab AS P ON E.Employeeid = p.Employeeid
inner join @ApprovalStatustab as A ON P.PRID = A.PRID
--and a.Employeeid = e.Employeeid --this is added for distinct result too
inner join @Statustab as S on A.StatusID = S.StatusID
答案 1 :(得分:0)
您的状态信息必须不同,因为您的状态ID不同,并且他们有不同的消息...如果他们有相同的消息,您将有1行。
答案 2 :(得分:0)
确保PurchaseRequesttab中的列PRNR是唯一的(如PRID列)。