我有一个非常奇怪的情况,需要专家意见,有任何解决方案可用或我应该更改我的数据库结构。
ID TestName
1 HP
2 PV
3 UX
ID PID TestName TestValues Date
1 2 HP 23 12-11-2017
2 2 PV 88 12-11-2017
3 5 UX 24 14-11-2017
4 5 HP 44 14-11-2017
5 2 UX 33 15-11-2017
TestName PId 12-11-2017 15-12-2017
HP 2 23 -
PV 2 88 -
UX 2 - 33
现在我应该重构我的数据库,并且在MSSQL中有任何解决方案。
答案 0 :(得分:0)
您可以查询如下:
Declare @cols1 varchar(max)
Declare @query nvarchar(max)
Select @cols1 = stuff((select distinct ','+QuoteName([date]) from #patientdata where pid = 2 for xml path('')),1,1,'')
Select @query = ' Select * from
( Select PID, TestName, TestValues, [Date] from #patientdata where pid = 2) a
pivot (max(TestValues) for [date] in (' + @cols1 + ') ) p '
Exec sp_executeSql @query
输出如下:
+-----+----------+------------+------------+
| PID | TestName | 2017-11-12 | 2017-11-15 |
+-----+----------+------------+------------+
| 2 | HP | 23 | NULL |
| 2 | PV | 88 | NULL |
| 2 | UX | NULL | 33 |
+-----+----------+------------+------------+