0

ここに画像の説明を入力

実行前のクエリの最初の部分がnot in実行され、100 レコードのリストが表示されます。2 番目のクエリが実行され、75 レコードのリストが表示されます。私が使用して作成しようとしているクエリnot inは、一方の結果セットに含まれるレコードを取得することですが、もう一方の結果セットには含まれません。私が得るエラーはですincorrect syntax near the word not

SELECT distinct  Patient.patientid
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'%diabetes%') and  not in
(
SELECT    distinct Patient.patientid
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 LIKE N'25000')
) 

を使用してクエリを作成することは許可されていますexpression AND NOT IN (select queryか?

4

5 に答える 5

5

2 番目のクエリにないフィールドを指定する必要があります

and Patient.patientid not in
于 2012-06-20T20:32:31.980 に答える
2

これを書くつもりだったの?

WHERE     (tblICD.descrip LIKE N'%diabetes%') and Patient.patientid not in

アップデート

全体をこのように書き直すことは可能でしょうか?

SELECT distinct  Patient.patientid
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'%diabetes%' AND tblICD.icd_id NOT LIKE N'25000'
于 2012-06-20T20:32:31.360 に答える
1

NOT の前のフィールドを忘れました。

于 2012-06-20T20:33:50.140 に答える
1

が見ている列を指定する必要があると思いますnot in。あなたのスクリプトによると、私はあなたが望むと思いますand Patient.patientid not in

于 2012-06-20T20:40:01.677 に答える
1

純粋に文体: 患者 ICD*tblICD プロダクトを「絞り出し」、CTE に入れ、次のように 2 回参照することができます: (未テスト)

WITH zzz AS (
        SELECT pic.patientid , pic.admissiondate , pic.dischargedate
        , tab.ICD_ID , tab.descrip
        FROM patientICD pic
        JOIN tblICD tab ON pic.primarycode = tab.ICD_ID
        )
SELECT DISTINCT p.patientid
FROM  Patient p
JOIN zzz one ON one.patientid = p.patientid
             AND one.admissiondate = p.admissiondate 
             AND one.dischargedate = p.dischargedate 
WHERE one.descrip LIKE N'%diabetes%'
AND p.patientid NOT IN (
        SELECT two.patientid 
        FROM zzz two
        WHERE two.admissiondate = p.admissiondate
        AND two.dischargedate = p.dischargedate
        AND two.icd_id LIKE N'25000'
        );

注: は好きではありませんLIKE N'25000'。完全一致でいいと思います。icd_id-field はおそらく数値でなければなりません。また、{admissiondate,dischargedate} ペアもモデル化する必要があります。おそらくdiagnostic_idまたはincident_idを使用して。

于 2012-06-20T21:16:13.053 に答える