2012-03-01 18 views
0

私はストアドプロシージャを書いています。私が使用しているクエリは、2つの列を除いてすべての方法で同一の行をとり、それらを1つの行に結合し、2つの行を1つに統合します。今私は別の問題に取り組んでいます。これらの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; 

ストアドプロシージャの作成時にこれを行う方法はありますか?または、これを行うために私のクエリを変更する方法がありますか?

私がしたいのは、合体した列から重複を取り除くことです。クエリは、それ以外の場合は期待通りに機能します。

ありがとうございました。私はそれが理にかなったことを願うあなたのサブクエリでDISTINCTが必要

答えて

2

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

関連する問題