如何在SQL Server 2000中获取唯一记录

时间:2015-01-19 06:53:35

标签: sql sql-server sql-server-2005

我有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   

如何在结果集中获取唯一记录,编辑结果:)

3 个答案:

答案 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列)。