2017-05-30 6 views
0

は私がは、特定の列にMSSQLのクエリ結果を結合する方法

Select T.tno,P.GMass,t.TicketNo,t.SchedID,t.Compound from TicketBatch 
T join PalletWeight P on T.tno=P.Tno where isProcesed = 0 and P.TNo 
=(select MAX(tno) from PalletWeight) 

結果クエリをたどるような単純なクエリを結合し実行していることは

enter image description here

Idはより多くの結果の要約を持っているのが好きですtno、gmass、schedIDおよびcompoundの1つのフィールドを与えます(これは常に同じです)。TicketNoは合体する必要があります。

任意の助けをいただければ幸いTNO、Gmass、TicketNo、SchedID、化合物

(250)、(200.00)、(105132,105133,105134)、41729、ヌル

すなわち

+3

いいえ、これは「合体」とは異なります。 CSVには、各グループのチケット番号を集約したいと考えています。 –

+0

[文字列を連結/集約する最適な方法]の複製があります(https://stackoverflow.com/questions/13639262/optimal-way-to-concatenate-aggregate-strings) –

答えて

0

あなたはこれを実現するためにFOR XML PATHを使用することができます - 最もエレガントな方法ではないかもしれませんが、それは動作するはずです:

SELECT 
    tno 
, GMass 
, '(' + LEFT(tickets, LEN(tickets)-1) + ')' AS TicketNo 
, SchedId 
, Compound 
FROM (
    SELECT DISTINCT 
     T.tno 
    , P.GMass 
    , ( SELECT TicketNo + ',' 
      FROM TicketBatch T2 
      WHERE T.tno = T2.tno 
      FOR XML PATH('')) AS tickets 
    , T.SchedId 
    , T.Compound 
    FROM TicketBatch T 
    JOIN PalletWeight P 
     ON T.tno = P.tno 
) X 

基本的には、XML PATHを使用して最も内側のクエリを持つ文字列をAAA,BBB,CCC,に作成し、それをフィールドとして選択してから、外部クエリを使用してカッコを追加し、末尾のカンマを切り捨てます。 WHERE T.tno = T2.tnoを使用して、正しいチケット一覧を取得します。私はtnoがあなたの質問に基づいてプライマリキーであり、それが正しいチケットリストを引っ張るために使用されたと仮定しました。

関連する問題