目前我在使用 PIVOT() 后有一个表格,格式和数据值如下
NameID DocumentName Time Value1 Value2 Value3 Value4 Value5
------ ------------ ---- ------ ------ ------ ------ ------
2221 Doc1 1053 23 24 25 NULL NULL
2221 Doc1 1153 31 32 NULL 28 30
2221 Doc2 1253 NULL NULL NULL 40 41
2222 Doc3 1053 03 06 09 12 15
我需要将记录 1,2,3 与最新值合并到一行中,格式将是这样的。
NameID Value1 Value2 Value3 Value4 Value5
------ ------ ------ ------ ------ ------
2221 31 32 25 40 41
2222 03 06 09 12 15
它将使用时间戳作为参考来决定更新哪些值以及保留哪些值。任何帮助或开始将不胜感激,让我继续我的工作!
这很棘手。
如果不了解pivot
查询本身,也许最简单的方法是相关子查询或apply
:
select nameId,
(select top (1) t2.documentname
from t t2
where t2.nameId = t.nameId and t2.documentname is not null
order by t2.time desc
) as documentname,
max(time) as time,
(select top (1) t2.value1
from t t2
where t2.nameId = t.nameId and t2.value1 is not null
order by t2.time desc
) as value1,
(select top (1) t2.value2
from t t2
where t2.nameId = t.nameId and t2.value2 is not null
order by t2.time desc
) as value2,
. . .
from t;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句