有没有办法找到表中所有数字列的最大值?

时间:2014-09-15 11:21:27

标签: sql sql-server sql-server-2008

有没有办法找到表中任何列或任何数据类型的最大值?

让我更多地了解这一点。如果我有一个包含10列的表,而某些列的数据类型为int,有些列具有十进制数据类型。是否有任何sql函数可以从该表中获取最大的“数值”值?

P_ID  Price Quantity CreateDate                 UpdateDate
1      5.99   60     2014-09-02 07:06:16.000    2014-09-02 07:06:16.000
2      45     20     2014-09-02 07:06:16.000    2014-09-02 07:06:16.000
3      29.99  35     2014-09-02 07:06:16.000    2014-09-02 07:06:16.000
4      95     10     2014-09-02 07:06:16.000    2014-09-02 07:06:16.000
5      199    20     2014-09-02 07:06:16.000    2014-09-02 07:06:16.000

编辑:我给出的例子只是一个例子而不是实际数据。在示例中,我希望能够看到'199'作为结果。我知道MAX(Price)会给我199但我不能在我的实际表格中假设这一点。所以我需要的东西会给我约50000条记录的最大值......  如果可能的话,我需要一些可以在任何桌子上工作的通用......

3 个答案:

答案 0 :(得分:1)

好吧,您可以使用从syscolumns和systypes中选择的组合。 Systypes为您提供长度和精度,可用于提供您想要的信息吗?

答案 1 :(得分:1)

怎么样

select max(value)
from (
select P_ID as value from yourtable
union all
select Price from yourtable
union all
select Quantity from yourtable
) as allTogether

答案 2 :(得分:1)

试试这个,不幸的是你必须列出所有列。如果它们是相同类型会更容易:

SELECT max(val)
FROM 
(SELECT CAST(p_id as decimal(11,2)) p_id, 
 CAST(Price as decimal(11,2)) Price, 
 CAST(Quantity as decimal(11,2)) Quantity 
FROM yourtable) as p  
UNPIVOT      
(val FOR Seq IN           
([p_id], [Price], [Quantity]) ) AS unpvt