2016-12-28 10 views
0

stuff()関数の記事を読みましたが、これは私のクエリに使用する関数だと思います。Stuff()関数を使用して複数の行を結合する

しかし、このポストでさらに例を取り上げて列を追加し、私の理由IDと一致する理由テキストを別の表から引き出すサブクエリを含める必要があります。私は、日付、patientID、理由、otherNotesを持つテーブルを持っている...私はなるように1列に、各患者および各日付のすべてのノート/の理由を結合する必要があります。

Date  patientID  reason .....other columns.... 
__________________________________________________________ 
12/26/2016 2    age 
12/26/2016 2    location 
12/27/2016 2    missing info 
12/27/2016 2    age 

Date  patientID  reason .....other columns.... 
__________________________________________________________ 
12/26/2016 2    age, location 
12/27/2016 2    missing info, age 
なり

ここに私が創造し始めたのは、それが患者のためのすべての理由を日付に属するものだけでなく与えることです。さらに、残りの列をプルするためにクエリに追加する方法もわかりません。

私は良い強いクエリを作成することができますように도와ください。

 SELECT distinct DATEADD(dd, DATEDIFF(dd, 0, dateAdded), 0), 
      otherNote = STUFF((SELECT ', ' + (CASE WHEN eligibilityReason= 7 
      THEN otherNote ELSE Reasons.reason end) as reason 
      FROM Eligibility left Join Reasons on Reasons.reasonID = eligibilityReason 
      WHERE patientID=2 
       FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, '') 
      FROM Eligibility 
      GROUP BY DATEADD(dd, DATEDIFF(dd, 0, dateAdded), 0) 

答えて

0

サブクエリと外部クエリを関連付ける必要があります。

SELECT distinct 
     DATEADD(dd, DATEDIFF(dd, 0, eg.dateAdded), 0) 
    , otherNote = STUFF((SELECT ', ' + (CASE WHEN e.eligibilityReason= 7 
               THEN e.otherNote 
              ELSE r.reason 
             end) as reason 
          FROM Eligibility e 
          left Join Reasons on r.reasonID = e.eligibilityReason 
          where eg.patientID = e.patientID --<-- Correlate 
          AND eg.[Date] = e.[Date]   --<-- Correlate 
          FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, '') 
FROM Eligibility eg 
GROUP BY DATEADD(dd, DATEDIFF(dd, 0, eg.dateAdded), 0) 
+0

まだ日付でグループ化できません。エラーです。列 'Eligibility.patientID'は、集計関数またはGROUP BY句に含まれていないため、選択リストでは無効です。 列「Eligibility.dateAdded」は、集計関数またはGROUP BY句に含まれていないため、選択リストでは無効です。 – programmerInTraining

+0

日付のみでグループ化し、異なる患者をまとめてグループ化する場合を除いて、グループ化リストにPatientIDを追加します。 –

+0

ありがとう、しかし、私はまだ列 'Eligibility.dateAdded'が集計関数またはGROUP BY句に含まれていないため、選択リストで無効です。 – programmerInTraining

関連する問題