我有一个表count
与属性选择列的基础上最大值
- COUNT1
- COUNT2
- 共3个记录
- count4
- count5
我想选择一个具有最大值的列。我怎么做?
计数代表页面命中,我想选择一个具有最大命中并显示它的列。
我有一个表count
与属性选择列的基础上最大值
我想选择一个具有最大值的列。我怎么做?
计数代表页面命中,我想选择一个具有最大命中并显示它的列。
您可以使用一个双重嵌套子查询
select
(select max(count1)
from (
select count1 union all
select count2 union all
select count3 union all
select count4 union all
select count5) X) as MaxCount
from tbl
“union all”有什么用途? – 2011-03-02 08:04:46
@Uw概念:{subquery} UNION ALL {subquery} - >创建一个由两个子查询中的所有记录组成的派生表。 – RichardTheKiwi 2011-03-02 08:16:32
非常好,非常感谢您提供的信息! – 2011-03-02 08:20:02
有几种方法,涉及PIVOT
或Temp Table
,但我认为最容易理解的是使用Case
为此。
SELECT
CASE
WHEN count1 >= count2 AND count2 >= count3 AND count1 >= count4 AND count1 >= count5 THEN count1
WHEN count2 >= count3 AND count2 >= count4 AND count2 >= count5 THEN count2
WHEN count3 >= count4 AND count3 >= count5 THEN count3
WHEN count4 >= count5 THEN count4
ELSE count5
END AS highestCount
注意:如果任何计数为NULL,那么您的链将被破坏。 – RichardTheKiwi 2011-03-02 08:00:46
感谢您指出这一点,在列周围使用COALESCE(countX,0)可能有所帮助 – 2011-03-02 08:03:48
select MAX(max_count) FROM
(
select count1 as max_count from count
UNION
select count2 as max_count from count
UNION
select count3 as max_count from count
UNION
select count4 as max_count from count
UNION
select count4 as max_count from count
)
我不会建议使用选择,因为它需要很多的时候产生相同的。触发器会更好
你为什么要把列命名为'count1','count2'等等?他们是否表达了某种意义? – 2011-03-02 07:50:51
我不认为这些是列的实际名称.... – PedroC88 2011-03-02 07:54:14
kst - 一旦问题得到解答,通常会在答案中打勾以表明它已被接受。这在某种意义上“关闭”了关于答案的 – RichardTheKiwi 2011-03-02 10:52:51