2017-06-27 10 views
0

私は、MySQLからSQL Serverへのスクリプトを変更したが、主にスクリプトを正しく変更しましたが、構文上の問題の最後の少しまで実行しています。 FROMステートメント内のサブクエリと同じことをした後に、スクリプトの先頭にあるクエリにSTUFF FOR XML PATHを照会しようとしています。サブクエリは正しく動作しますが、これは問題が発生している主なクエリです。スクリプト全体がかなり大きいので、私はちょうど私が私が私がfacility_priorityをグループ化し、同じ行にComplete_CodesIncomplete_Codesを持つことになる取得しようとしていた結果として、私の質問に意味を作っています願ってrextester.comメインクエリSTUFF FOR XML PATHが動作しません

にそれを入れていますし、 facility_name一緒に。

ありがとうございます!

+2

小さなコンポーネントに問題を分割し、より管理しやすいものについて質問してください。 –

+0

これは私が得ることができる最小です。私がクエリで持っている唯一の問題は、サブクエリの残りの部分が正常に動作するので、メイン(トップ)クエリです。 – res74

+0

そのスクリプトの小さな部分にのみ問題がある場合は、期待したとおりに動作しないステートメントを表示してみてください。 –

答えて

1

GROUP BYクエリのSELECTリスト内のXMLパスの使用サブクエリがテンプレートに

SELECT 
    c1.facility_name, 
    c1.facility_priority, 
    STUFF((SELECT ',' + c2.Incomplete_Codes 
     FROM combined c2 
     WHERE c2.facility_name = c1.facility_name AND c2.facility_priority =c1.facility_priority 
     FOR XML PATH('')), 1, 1, '') AS Incomplete 
FROM combined c1 
GROUP BY 
    facility_name, 
    facility_priority 

に従わなければならないので、あなたの内側のクエリは、CTEとして導入することができます。最後に

WITH combined AS (
-- your inner query 
) 
SELECT 
    c1.facility_name, 
    c1.facility_priority, 
    STUFF((SELECT ',' + c2.Incomplete_Codes 
     FROM combined c2 
     WHERE c2.facility_name = c1.facility_name AND c2.facility_priority =c1.facility_priority 
     FOR XML PATH('')), 1, 1, '') AS Incomplete 
    --, same for complete 
FROM combined c1 
GROUP BY 
    facility_name, 
    facility_priority 
+0

ありがとうございました!それは魅力のように働いた。彼らが便利になるように私は戻ってCTEを再検討しなければなりません:) – res74