如何从数据透视表中提取信息以填充另一个表

时间:2015-04-30 02:26:30

标签: sql-server pivot-table

地址信息一旦存储在分层生产数据库中,患者表为TempStreetAddr1,TempStreetAddr2,TempCity,TempState,TempZip或Next of Kin(NOK)地址,或初级保健(PC)地址等...所以有一列对于每种类型的地址的每个地址字段,可以想象患者有。

正在从该生产数据库中提取数据到SQL BI报告数据库,在那里他们拆分Patient表并添加了一个地址表,我告诉他是一个数据透视表。 (我对透视表一无所知)我现在需要将数据检索到它的原始形式,因此我的查询需要查看此地址表以及下面的列并提出TempAddress列。列AddressType定义它是Temp,PC还是NOK。 PatientSID是加入Patient和PatientAddress的标识符。是否有可能轻松完成这项工作?怎么样?

我是一名SQL DBA而不是那么优秀的开发人员,但我们的开发人员合同已停滞不前,而且我正在努力协助管理。非常感谢代码示例或类似的帮助。

我想沿着这些方向转变;对于每个不同的AddressType,我需要生成两个IF语句中所示的列。 --SQL 2012

If AddressType = 'Temporary' then StreetAddress1 as TempStreetAddr1, City as TempCity, State as TempState 

if AddressType = 'NOK' then StreeAddress1 as NokStreetAddr1, City as NOKCity, State as NOKState

  ,[PatientSID]
  ,[PatientIEN]
  ,[Sta3n]
  ,[OrdinalNumber]
  ,[AddressType]
  ,[NameOfContact]
  ,[StreetAddress1]
  ,[StreetAddress2]
  ,[StreetAddress3]
  ,[City]
  ,[County]
  ,[StateSID]
  ,[State]
  ,[Zip]
  ,[Zip4]
  ,[Province]
  ,[PostalCode]
  ,[Country]
  ,[Phone]
  ,[PhoneWork]

我可以这样做,但这种方法真的很好。当然有一种更光滑的方式。

  Select
  p.GIVEN_NM, pa.addresstype,
  case pa.Addresstype
        when 'Temporary' then pa.StreetAddress1 
  END TempStreet1,
    case pa.Addresstype
        when 'Temporary' then pa.City 
  END TempCity,
    case pa.Addresstype
        when 'Temporary' then pa.State 
  END TempState,
    case pa.Addresstype
        when 'Temporary' then pa.Zip
  END TempZip,
    case pa.Addresstype
        when 'Next Of Kin' then pa.StreetAddress1 
  END NOKStreet1,
    case pa.Addresstype
        when 'Next Of Kin' then pa.City 
  END NOKCity,
    case pa.Addresstype
        when 'Next Of Kin' then pa.State 
  END NOKState,
    case pa.Addresstype
        when 'Next Of Kin' then pa.Zip
  END NOKZip

  FROM V5DW_vw.dbo.Patient P
  join [SPV].[SPatient].[SPatientAddress] pa 
  on p.PatientSID = pa.PatientSID
  where pa.AddressType in ('Next Of Kin','Temporary')

0 个答案:

没有答案