2017-12-22 28 views
1

私はMySQLがどのようにしてGroup_Concatで動作するかを知っていますので、SQLサーバがどのようにグループ連結と連携するかを理解することは困難です。私はBxの値を選択しているので、xml pathのグループ化のためには、PPNumberでグループ化することはできません。SQL Server - グループ返す同じ情報

Bxとの区切りのリストを作るための方法はpp.[PPNumber] as PartNumber列にグループ基づいて値ありますかxml pathグループ内のみPPNumber列によってグループにBxsを取得するための良い方法はありますか?

SELECT 
pp.[PPNumber] as PartNumber, 
COUNT(PSN) as ActualCount, 
replace((SELECT b.Bx AS [data()] 
     FROM def.dbo.[boxes] b 
     Group By b.[PPNumber] ,b.Bx 
     ORDER BY b.Bx 
     FOR xml path('')), ' ', ',') as Bxs 

FROM def.dbo.[packtable] p 
JOIN (SELECT Bx, [PPNumber] FROM def.dbo.[boxes] WHERE (CONCAT(Completed, ' 
    ', CompletedTime) > @sDate AND CONCAT(Completed,' ', CompletedTime) < 
    @eDate)) b on p.Bx= b.Bx 
JOIN def.dbo.[PPNumlist] pp on b.[PPNumber] = pp.[PPNumber] 

GROUP BY pp.[PPNumber] 
ORDER BY pp.[PPNumber] ; 

enter image description here

+2

結果とSQL文からリバースエンジニアリングするのは非常に難しいので、サンプルデータを投稿すると助けになります。私はあなたのSELECT句のサブクエリは、メインクエリ(サブクエリのWHERE句の 'def.dbo.boxes'とメインクエリの2つのテーブルとの間には関係がありません)と相関していないことが問題だと思います。私はボックステーブルにすでに参加しているので、サブクエリは不要だと思っています。サンプルデータは明らかにするのに役立ちます。 – JNevill

+0

サンプルデータは画像内にあります。それに役立つその他の情報は何ですか? @JNevill – narue1992

+0

@JNevillは、あなたが探している結果だけでなく、あなたが始めているもののサンプルを投稿するように求めています。コンテキストがないクエリを見ると、タスクがずっと難しくなります。 –

答えて

1

@JNevilは、サブクエリがメインクエリに相関はなかったmetioned。これは私が同意するが、私はそれについて行く最善の方法を知らなかった。しかし、関数を使ってテストしたところ、正しく機能しました。

私がやったことはすべてPNと日付範囲で合格していました。

SELECT 
pp.[PPNumber] as PartNumber, 
COUNT(PSN) as ActualCount, 
def.dbo.udf_Get_PackedBoxListByPN(pp.[PPNumber], @sDate,@eDate) as Bxs 
関連する問題