用于从子表中提取数据的SQL服务器查询
问题描述:
我有一个名为Identifier的表,它具有对患者表的identifierType,identifierValue和foreignkey。用于从子表中提取数据的SQL服务器查询
一名患者可以有多个标识符,因此对于给定患者,标识符表中会有多行。
我想拉从该表符合给定标准patientforeign键的值,
一个例子是,我想找到
patientId where identifierType = 'PatientFirst"
and identifierValue = 'sally'
and identifierType= 'patientFirst'
and identifier value = 'sally'.
会是怎样的SQL语句来拉SQLSERVER
这一结果
答
似乎有点容易让这个网站,不是吗? :)
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'
我想我想通了。我想拉根据多个标准,所以我认为这样的事情将在我的情况下工作: 从标识符中选择fk_patientId其中IdentifierType ='PatientLast'和identifiervalue ='doe' 和fk_patientId in(从标识符中选择fk_patientid其中IdentifierType = 'PatientFirst'和identifiervalue ='sally') – user2875052