用于从子表中提取数据的SQL服务器查询

问题描述:

我有一个名为Identifier的表,它具有对患者表的identifierType,identifierValue和foreignkey。用于从子表中提取数据的SQL服务器查询

一名患者可以有多个标识符,因此对于给定患者,标识符表中会有多行。

我想拉从该表符合给定标准patientforeign键的值,

一个例子是,我想找到

patientId where identifierType = 'PatientFirst" 
and identifierValue = 'sally' 
and identifierType= 'patientFirst' 
and identifier value = 'sally'. 

会是怎样的SQL语句来拉SQLSERVER

这一结果

参考文献:(http://sqlfiddle.com/#!3/33fc6/2/0

+0

我想我想通了。我想拉根据多个标准,所以我认为这样的事情将在我的情况下工作: 从标识符中选择fk_patientId其中IdentifierType ='PatientLast'和identifiervalue ='doe' 和fk_patientId in(从标识符中选择fk_patientid其中IdentifierType = 'PatientFirst'和identifiervalue ='sally') – user2875052

似乎有点容易让这个网站,不是吗? :)

SELECT fk_patientID 
FROM identifier 
WHERE IdentifierType = 'PatientFirst' 
AND IdentifierValue = 'sally' 
+0

感谢诺亚,但我需要根据多个标识符来拉取。我想我已经找到了解决办法,并已将我的解决方案发布为上面的注释。 – user2875052

透视表可能对你有用的,如果你想给某些属性压扁成每病人ID单行:

;with PatientFullName(fk_patientId, PatientLast, PatientFirst) 
as 
(
    select 
    fk_patientId 
    , pt.PatientLast 
    , pt.PatientFirst 
    from 
    Identifier 
    pivot 
    (
     MAX(identifierValue) 
     for identifierType in ([PatientLast], [PatientFirst]) 
    ) as pt 
) 

select 
    * 
from 
    PatientFullName pfn 
where 
    pfn.PatientLast = 'Doe' 
    and pfn.PatientFirst = 'Sally'