1

我有这样的架构

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

我想显示 PatientID、PatientName、Initial(从前 2 个字符 PatientName 中获得大写格式)、PatientBirthDate 和 TransactionCount(来自患者完成的检查次数,并在结尾)。

结果应该是这样的:

结果图片

我努力了 :

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

但它是无效的,有效的应该像图片中一样..

4

1 回答 1

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(公用表表达式)执行此操作

于 2013-06-30T07:41:00.083 回答