2017-03-22 31 views
0

我必須在子查詢中計數。我想將其添加到子查詢中。 我得到一個當我加入這一行的子查詢失敗: SELECT COUNT(DISTINCT v.Department_descr),v.Patient_Number,b.patient_name FROM vwGenVouchInfo v)作爲pat_dept如何在子查詢中添加計數


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(選擇1作爲myvalue)q'不會。所以像count這樣的函數在子查詢中需要一個別名。 – LukStorms

+0

即使我只是嘗試計數語句我得到了所有錯誤消息8120,級別16,狀態1,行1 列'vwGenVouchInfo.Patient_Number'在選擇列表中無效,因爲它不包含在聚合函數或GROUP BY條款。 消息4104,級別16,狀態1,行1 無法綁定多部分標識符「b.patient_name」。 Msg 4104,Level 16,State 1,Line 1 無法綁定多部分標識符「b.patient_number」。 –

+0

在幾乎所有主要的數據庫類型中,當您使用像COUNT這樣的聚合函數時,這基本上意味着它是按組合的。然後,SELECT中的任何列(不包括集合函數中的那些列)也需要位於GROUP BY部分中。看看@Sid在他的回答中所說的話。 – LukStorms

回答

0

如果需要此子查詢,你將不得不把所有必要的列逐一與計數一起,然後按相同的列。