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 查找具有最大值的列的名称的主要内容,如果未能解决你的问题,请参考以下文章

基于另一列的最大值的列上的 SQL 内连接 [重复]

Pandas - 具有重复值的列的外部连接

查找列的最大值,按不同表中的列分组

如何在pyspark中连接具有相同名称的列的值

查找具有匹配列名的列的平均值

如何获得具有最大值的列的行? [复制]