s-s-rS 2005 查找具有最大值的列的名称
Posted
技术标签:
【中文标题】s-s-rS 2005 查找具有最大值的列的名称【英文标题】:s-s-rS 2005 find name of column with max value 【发布时间】:2013-02-15 20:34:30 【问题描述】:最右边的列是我要添加到报告中的内容。是否可以在不修改查询以使用 Unpivot 之类的东西的情况下做到这一点?
Step X Step W Step A Step B Step Y Last Step
---------------------------------------------------------------------
1/21/2013 1/24/2013 1/3/2013 1/5/2013 1/7/2013 Step W
这是朝着正确方向迈出的一步,但它似乎只适用于 s-s-rS 2008:http://www.bigator.com/2012/04/26/spothighlight-minimum-and-maximum-values-in-each-row-in-matrix-report-in-s-s-rs/
【问题讨论】:
【参考方案1】:您可以使用UNPIVOT
函数和CROSS APPLY
来获得:
;with cte as
(
select col, value
from yourtable
unpivot
(
value
for col in ([Step X], [Step W], [Step A], [Step B], [Step Y])
) unpiv
)
select [Step X],
[Step W],
[Step A],
[Step B],
[Step Y],
d.col LastStep
from yourtable
cross apply
(
select c1.col
from cte c1
inner join
(
select max(value) MaxDate
from cte
) c2
on c1.value = c2.maxdate
) d
见SQL Fiddle with Demo
【讨论】:
哇,真快。看起来我毕竟会使用 unpivot 。谢谢! @Kon_UNPIVOT
非常适合您拥有未标准化的数据。
当不同的记录有共同的日期时,这似乎有问题:SQL Fiddle with example。有什么办法吗?
@Kon_ 你应该发布一个包含新细节的新问题。以上是关于s-s-rS 2005 查找具有最大值的列的名称的主要内容,如果未能解决你的问题,请参考以下文章