0

저장 프로 시저를 쓰고 있습니다. 내가 사용하고있는 쿼리는 2 열을 제외하고 모든면에서 동일한 행을 가져 와서 하나의 행에 결합하고 두 행을 하나로 결합합니다. 이제 다른 문제가 있습니다. 때로는이 두 행에 값이 중복되어 중복을 제거하려고합니다.저장 프로 시저의 COALESCED 열에서 중복을 제거 하시겠습니까?

예 :

TeamID Team City  State Equipment 
1   Thunder OKC  OK  Basketball, Basketball, Basketball, Shorts, Jersey, Jersey 

내가 이렇게되고 싶어 : 여기

TeamID Team City  State Equipment 
1   Thunder OKC  OK  Basketball, Shorts, Jersey 

내가 그 행을 결합하여 사용하고 쿼리입니다.

SELECT DISTINCT 
      AssignedOfficeID, AssignedOffice, OperatorID, OperatorName, RigMasterID, DrillerRigNumber, WellID, 
      County, State, WellName, CompanyMan, CompanyManPhone, DateStart, DateStop, Representative, RepresentativeID, RepresentativeAssignedID, RepresentativeAssigned, 
      PricePerDay, CotNumber, CustomerOrderTicketNumber, 
      Equipment = STUFF((SELECT ', ' + COALESCE(RentalEquipmentAbbreviation, EquipmentAbbreviation, '') 
          FROM @ActiveRigsInfo AS ARI2 
          WHERE ARI2.AssignedOfficeID = ARI1.AssignedOfficeID AND ARI2.AssignedOfficeID = ARI1.AssignedOfficeID 
          AND ARI2.OperatorID = ARI1.OperatorID AND ARI2.OperatorName = ARI1.OperatorName 
          AND ARI2.RigMasterID = ARI1.RigMasterID AND ARI2.DrillerRigNumber = ARI1.DrillerRigNumber 
          AND ARI2.WellID = ARI1.WellID AND ARI2.County = ARI1.County AND ARI2.State = ARI1.State 
          AND ARI2.WellName = ARI1.WellName AND ARI2.CompanyMan = ARI2.CompanyMan AND ARI2.CompanyManPhone = ARI1.CompanyManPhone 
          AND ARI2.DateStart = ARI1.DateStart AND ARI2.Representative = ARI1.Representative 
          AND ARI2.CotNumber = ARI1.CotNumber 
          FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'),1,2,'') 
         FROM @ActiveRigsInfo AS ARI1 
         ORDER BY AssignedOffice, OperatorID, RigMasterID; 

저장 프로 시저를 만들 때 이렇게하는 방법이 있습니까? 또는이 작업을 수행하기 위해 쿼리를 변경할 수있는 방법이 있습니까?

내가 원하는 것은 합체 된 열에서 중복을 제거하는 것입니다. 그러나 쿼리는 예상대로 수행됩니다.

감사합니다. 나는 그것이 의미가 있기를 바랍니다.

답변

2

당신은 당신의 하위 쿼리에 DISTINCT 필요합니다

SELECT DISTINCT 
      AssignedOfficeID, AssignedOffice, OperatorID, OperatorName, RigMasterID, DrillerRigNumber, WellID, 
      County, State, WellName, CompanyMan, CompanyManPhone, DateStart, DateStop, Representative, RepresentativeID, RepresentativeAssignedID, RepresentativeAssigned, 
      PricePerDay, CotNumber, CustomerOrderTicketNumber, 
      Equipment = STUFF((SELECT DISTINCT ', ' + COALESCE(RentalEquipmentAbbreviation, EquipmentAbbreviation, '') 
          FROM @ActiveRigsInfo AS ARI2 
          WHERE ARI2.AssignedOfficeID = ARI1.AssignedOfficeID AND ARI2.AssignedOfficeID = ARI1.AssignedOfficeID 
          AND ARI2.OperatorID = ARI1.OperatorID AND ARI2.OperatorName = ARI1.OperatorName 
          AND ARI2.RigMasterID = ARI1.RigMasterID AND ARI2.DrillerRigNumber = ARI1.DrillerRigNumber 
          AND ARI2.WellID = ARI1.WellID AND ARI2.County = ARI1.County AND ARI2.State = ARI1.State 
          AND ARI2.WellName = ARI1.WellName AND ARI2.CompanyMan = ARI2.CompanyMan AND ARI2.CompanyManPhone = ARI1.CompanyManPhone 
          AND ARI2.DateStart = ARI1.DateStart AND ARI2.Representative = ARI1.Representative 
          AND ARI2.CotNumber = ARI1.CotNumber 
          FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'),1,2,'') 
         FROM @ActiveRigsInfo AS ARI1 
         ORDER BY AssignedOffice, OperatorID, RigMasterID; 
+0

감사 @Adrian, 나는 그것을 감사드립니다. – broguyman