0

整天在这工作,似乎没有任何进展。
我有这样的数据:

MemberID    Group           MemberStatusType    ContactTask         Jan Assess Date     Jan RF Score    Jan PF Score    Feb Assess Date     Feb RF Score    Feb PF Score    Mar Assess Date     Mar RF Score    Mar PF Score
5213        MSO             Engaged X           Follow Up Contact   1/31/2012           1               4               NULL                        NULL            NULL            NULL            NULL            NULL
5213        MSO             Engaged X           Follow Up Contact   NULL                NULL            NULL            2/29/2012                   2                   2           NULL            NULL            NULL
5213        MSO             Engaged X           Follow Up Contact   NULL                NULL            NULL            NULL                        NULL            NULL        3/21/2012           5               4

我想要得到的是这样的数据:

MemberID    Group   MemberStatusType    ContactTask         Jan Assess Date     Jan RF Score        Jan PF Score        Feb Assess Date     Feb RF Score    Feb PF Score    Mar Assess Date     Mar RF Score        Mar PF Score
5213        MSO         Engaged X       Follow Up Contact   1/31/2012               1                   4               2/29/2012               2               2           3/21/2012               5                   4

我已经尝试过 PIVOT,但我不喜欢结果,因为我不需要聚合任何东西。我只需要从多行中获取数据并将其全部保存到一行。我还在这个网站上看到了一些这样做的例子,但我无法让这些东西正常工作,或者有些是用于 oracle 或 mysql 的,我不知道如何转换为 MS SQL。

4

1 回答 1

2

您可以使用聚合来执行此操作:

select MemberId, Group, MemberStatusType, ContactTask,
       max([Jan Assess Date]) as [Jan Assess Date],
       . . .
from t
group by MemberId, Group, MemberStatusType, ContactTask;

max()函数将用于在行之间返回非空值(如果有)。

于 2013-11-07T23:57:18.077 回答