【发布时间】:2019-07-03 17:24:54
【问题描述】:
我知道这已经被问过很多次了,但我很难找到我需要的解决方案。
数据:
Id FKId TypeId Score ScoreDate
1 317 1 90 2019-01-01
2 317 1 80 2019-01-02
3 317 2 65 2019-01-03
4 317 2 80 2019-01-04
5 318 1 82 2019-01-01
6 318 1 78 2019-01-02
7 318 2 55 2019-01-03
8 318 2 63 2019-01-04
预期结果:
FkId A1 A2 B1 B2
317 90 80 65 80
318 82 78 55 63
我尝试使用枢轴来获取数据,但我偶然发现的是您需要使用聚合函数,这会导致错误的结果。其中一种尝试的示例:
select *
from
(
select [FkId], [TypeId], [Score]
from #yt
) src
pivot
(
max([Score])
for [TypeId] in ([1], [2], [3])
) piv;
query result:
FkId 1 2 3
101 83 82 NULL
102 96 80 NULL
我知道我需要不止一个查询才能获得预期结果,但这不是我关心的问题,现在我只想将一种类型的分数与每个分数转置到它自己的列中。
任何帮助都可以。
【问题讨论】:
标签: sql-server tsql dynamic pivot