2012-03-01 18 views
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 2012-03-01 16:42:30