这是我第一次尝试使用PIVOT。 我正在使用Microsoft SQL Server。使用非数值数据枢轴
所以这里是我的问题,我一直在阅读Pivot,并且已经决定它对于将病人数据导出为格式化文件(即报告,可以打印出来等等)的项目非常有效。
VPatientPlusAllergyData是一个视图,显示这是一些数据的采样结果切出便于阅读
strPatientFullName strAllergy strAllergyMedication
------------------------------------------------------------
Smith, John Henry Dogs Pounces
Smith, John Henry Dogs Orange Juice
Smith, John Henry Mustard Ketchup
Smith, John Henry Mustard Sugar
这是结果我想
strPatientFullName strAllergy1 strAllergy1Medications strAllergy2 strAllergy2Medications
------------------------------------------------------------------------------------------------------
Smith, John Henry Dogs Pounces, OrangeJuice Mustard Ketchup, Sugar
在W3Schools上阅读后,观看Youtube视频,甚至阅读本网站上的一些文章,我想知道我正在尝试做什么是可能的
下面是一个代码片段,但我被困在我应该把什么IN声明,以及当我开始质疑PIVOT是否解决我的特定问题的可行性。
GO
SELECT
strPatientFullName
,strStreetAddress
,strCity
,strState
,strZipcode
,strPrimaryPhoneNumber
,strSecondaryPhoneNumber
,blnSmoker
,decPackYears
,blnHeadOfHousehold
,dtmDateOfBirth
,strSex
,strAllergy
,strAllergyMedication
,strEmailAddress
,strRecordCreator
FROM (SELECT * FROM VPatientPlusAllergyData) PatientAllergyData
PIVOT
(
MAX(strAllergyMedication)
FOR strAllergy
IN()
)
GO
希望有人更熟悉枢轴会告诉我什么我失踪或启发我一个更有效的解决方案。
感谢您的帮助
******编辑:我已经决定了,虽然我很想把这种操作在服务器端,我的具体应用,它只是简单的创建大量的视图然后在客户端执行SELECT查询并将它们连接在一起,然后执行“EXPORT PROCESSING”屏幕。 我感谢所有的帮助,也许在一天我会写一个脚本,并让它执行服务器端,但目前这项工作足够好****** ******
编辑:其实,没关系,我没有正确地阅读你的问题。看来,你的问题需要混合旋转和填充。 – ZLK
假设过敏的值可以是n个,那么您需要为此使用'DYNAMIC SQL'。这是一个很好的教程。 http://sqlhints.com/2014/03/18/dynamic-pivot-in-sql-server/ – scsimon