整天都在工作,似乎无法取得任何进展 我有这样的数据:
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。
答案 0 :(得分:2)
您可以使用聚合执行此操作:
select MemberId, Group, MemberStatusType, ContactTask,
max([Jan Assess Date]) as [Jan Assess Date],
. . .
from t
group by MemberId, Group, MemberStatusType, ContactTask;
max()
函数将用于返回行中的非空值(如果有)。