用于从子表中提取数据的SQL Server查询

时间:2013-10-12 23:28:03

标签: sql sql-server-2005

我有一个名为Identifier的表,它有一个identifierType,identifierValue和foreignkey到病人表。

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

我想从符合给定标准的表中提取patientforeign键的值,

一个例子是我想找到

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

什么是sql语句将此结果拉入sqlserver

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

2 个答案:

答案 0 :(得分:0)

这个网站看起来有点简单,不是吗? :)

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

答案 1 :(得分:0)

如果您希望将每个患者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'