2013-06-30 26 views
1

外鍵我有這樣SQL:算上另一個表

http://sqlfiddle.com/#!3/690e8

我想告訴PatientID,PatientName,初始,PatientBirthDate(從第2個字符PatientName用大寫格式獲得)的模式,和TransactionCount(根據患者完成的檢查次數得出,並在末尾添加'Transaction(s)'一詞)。

的結果應該是這樣的:

result picture

我曾嘗試:

select mp.PatientID,mp.PatientName,(upper(left(mp.PatientName,2))) [initial],mp.PatientBirthDate,trans.result 
from MsPatient mp, 
(select COUNT(th.PatientID) as result 
from TransactionHeader th group by th.PatientID) as trans 

,但它是無效的,有效的應該是像圖片..

+0

您需要回顧並回顧如何正確編寫連接。你沒有加入條件。 – Barmar

回答

0
select 
    mp.PatientID, 
    mp.PatientName, 
    upper(left(mp.PatientName, 2)) as [initial], 
    mp.PatientBirthDate, 
    cast(trans.result as varchar(50)) + ' Transaction(s)' as [NumberOfTransactions] 
from 
    MsPatient mp 
    join (select PatientID, COUNT(PatientID) as result 
      from TransactionHeader group by PatientID) trans on trans.PatientId = mp.PatientId 

注意到內聯派生表的連接'trans' [您也可以使用CTE(公用表表達式)執行此操作