2017-03-22 7 views
0

サブクエリでカウントする必要があります。これをサブクエリに追加します。 SELECT COUNT(DISTINCT v.Department_descr)vwGenVouchInfo vから、v.Patient_Number、b.patient_name)をpat_deptサブにCountを追加する方法


SELECT * 
FROM vwGenVouchInfo v 
WHERE v.Patient_Number=b.Patient_Number 
    AND v.Voucher_Primary_Diagnosis_Code IN ('Z00.129', 'Z00.00')) 
ORDER BY voucher_primary_diagnosis_code 

私として: は、私は、サブクエリに次の行を追加するときに失敗取得しています患者が最も多くの時間に行った部門を持つ結果を得たいと考えています。私はこれをどのように追加するのか分かりません。Pat_deptが診療所を保持し、患者が歯科医院の他にほとんどの時間に行きたがります。

SELECT distinct 
    a.voucher_primary_diagnosis_code, 
    a.Patient_Number 
, b.Patient_Name, b.patient_home_phone, patient_age 
FROM vwGenVouchInfo a 
LEFT JOIN vwGenPatInfo b ON a.Patient_Number=b.Patient_Number 
WHERE 
    a.Department_Descr = 'Dental' 
and a.Voucher_Service_Date >= '2015-01-01' 
AND NOT EXISTS (
    -- This subquery looks at other vouchers of the same patient. 

    -- 
    SELECT * 
    FROM vwGenVouchInfo v 
    WHERE v.Patient_Number=b.Patient_Number 
     AND v.Voucher_Primary_Diagnosis_Code IN ('Z00.129', 'Z00.00')) 
ORDER BY voucher_primary_diagnosis_code 
+0

エラーについてサブクエリを使用する場合は、必要に応じてエイリアスを使用します。例えば ​​'select * from(select 1)q;'はエラーを返し、 'select * from(myvalueとして1を選択する)'は出力しません。したがって、countのような関数はサブクエリのエイリアスを必要とします。 – LukStorms

+0

でも私はカウントステートメントを試して私はすべてのエラーを持っているメッセージ8120、レベル16、状態1、行1 列 'vwGenVouchInfo.Patient_Number'は集計関数またはGROUP BYに含まれていないので、句。 メッセージ4104、レベル16、状態1、行1 マルチパート識別子 "b.patient_name"はバインドできませんでした。 メッセージ4104、レベル16、状態1、行1 マルチパート識別子 "b.patient_number"はバインドできませんでした。 –

+0

ほとんどの主要なデータベースタイプでは、COUNTなどの集計関数を使用すると、基本的にはグループ化されていることを意味します。 SELECTの中の列(集合関数内の列を除く)もGROUP BY部分にある必要があります。 @Sidが答えたところを見てください。 – LukStorms

答えて

0

あなたはサブクエリでこれを必要とする場合は、必要なすべての列と同じ列によって、その後数やグループと一緒に一つずつ配置する必要があります。

関連する問題