0

ここに画像の説明を入力

これはこれに関連する質問ですが、INの代わりにEXISTSを使用しています

SELECT distinct  Patient.patientid
FROM Patient P
JOIN patientICD pICD 
  ON P.patientid = pICD.patientid
  AND P.admissiondate = pICD.admissiondate
  AND P.dischargedate = pICD.dischargedate
JOIN tblICD 
  ON pICD.primarycode = tblICD.ICD_ID
WHERE  tblICD.descrip LIKE N'%diabetes%'
  AND patient.patientID not in (
         SELECT distinct Patient.patientid
         FROM Patient P
         JOIN patientICD pICD 
           ON P.patientid = pICD.patientid
           AND P.admissiondate = pICD.admissiondate
           AND P.dischargedate = pICD.dischargedate
         JOIN tblICD ON pICD.primarycode = tblICD.ICD_ID
         WHERE tblICD.icd_id =N'25000'
  ) 

このクエリは正常に動作しますが、選択式に別のフィールドを追加しようとすると、使用する必要がWHERE EXISTSあり、次のクエリは 0 の結果を返しますが、上記のクエリは 130 を返します。結果に tblicd.icd_id フィールドを追加しようとしています。最初のクエリから設定しましたが、何か間違っています。

SELECT DISTINCT  Patient.patientid, tblicd.icd_id
FROM Patient
INNER JOIN patientICD 
  ON Patient.patientid = patientICD.patientid 
  AND Patient.admissiondate = patientICD.admissiondate 
  AND Patient.dischargedate = patientICD.dischargedate 
INNER JOIN tblICD 
  ON patientICD.primarycode = tblICD.ICD_ID
WHERE tblICD.descrip LIKE N'%TextOfNote%'
  and not exists (
      SELECT DISTINCT Patient.patientid, tblicd.icd_id
      FROM Patient
      INNER JOIN patientICD
        ON Patient.patientid = patientICD.patientid 
        AND Patient.admissiondate = patientICD.admissiondate 
        AND Patient.dischargedate = patientICD.dischargedate 
      INNER JOIN tblICD 
        ON patientICD.primarycode = tblICD.ICD_ID
      WHERE tblICD.icd_id = N'25000'
)
4

2 に答える 2

1

あなたのスキーマに対してこれを実行したことはありませんが、試してみてください

編集...

SELECT DISTINCT  Patient.patientid, tblicd.icd_id
FROM Patient 
    INNER JOIN patientICD 
        ON Patient.patientid = patientICD.patientid 
        AND Patient.admissiondate = patientICD.admissiondate 
        AND Patient.dischargedate = patientICD.dischargedate 
    INNER JOIN tblICD 
        ON patientICD.primarycode = tblICD.ICD_ID
WHERE tblICD.descrip LIKE N'%TextOfNote%'
    AND tblICD.icd_id <> N'25000'
于 2012-06-21T01:52:50.600 に答える
0

ここでは、2 つの患者、patientICD、tblICD が使用されています。1 つはメイン クエリにあり、もう 1 つは「存在しない」クエリにあります。テーブルエイリアスを使用してみてください。

SELECT X FROM TABLEA A
INNER JOIN TABLEB B
  ON A.ID = B.ID

「存在しない」内のメインクエリを参照する必要があります...「ON」結合条件とwhere句に細心の注意を払ってください。

WHERE     (tblICD.descrip LIKE N'%TextOfNote%') and not exists
(
SELECT    DISTINCT Patient.patientid, tblicd.icd_id
FROM         Patient INNER JOIN
 patientICD ON Patient.patientid = patientICD.patientid AND Patient.admissiondate = patientICD.admissiondate AND 
                      Patient.dischargedate = patientICD.dischargedate INNER JOIN
                      tblICD ON patientICD.primarycode = tblICD.ICD_ID
WHERE     (tblICD.icd_id = N'25000')
)
于 2012-06-21T01:55:25.380 に答える