繁体   English   中英

SQL Server:在单个行结果集中具有各个时间戳的各个字段的多个最大值和最小值

[英]SQL Server: Multiple max and min values of various fields with respective timestamps in a single row resultset

我有一个带有以下字段的SQL Server表

Field1(REAL), Field2(REAL), ...Fieldn(REAL), DateNTime(TimeStamp)

在表table1

如何获得以下结果集? 即每个字段的最大值和最小值以及相应的时间戳

Max(Field1), Corresponding TimeStamp, Min(Field1), Corresponding TimeStamp, .....

类似地适用于其他领域。

谢谢大家,

通过使用窗口函数:

with cte as
(select t.*
        max(Field1) over () MaxField1,  
        min(Field1) over () MinField1, ...
 from Table1 t)
select max(MaxField1) MaxField1,
       max(case Field1 when MaxField1 then DateNTime end) MxF1DateTime,
       min(MinField1) MinField1,
       min(case Field1 when MinField1 then DateNTime end) MnF1DateTime,
       ...
from cte

最简单的解决方案是这样的:

select 
    Field1_min, (select max(TimeStamp) from table1 where Field1 = Field1_min) as ts1min,
    Field1_max, (select max(TimeStamp) from table1 where Field1 = Field1_max) as ts1max,
    Field2_min, (select max(TimeStamp) from table1 where Field2 = Field2_min) as ts2min,
    Field2_max, (select max(TimeStamp) from table1 where Field2 = Field2_max) as ts2max,
    Field3_min, (select max(TimeStamp) from table1 where Field3 = Field3_min) as ts3min,
    Field3_max, (select max(TimeStamp) from table1 where Field3 = Field3_max) as ts3max,
    Field4_min, (select max(TimeStamp) from table1 where Field4 = Field4_min) as ts4min,
    Field4_max, (select max(TimeStamp) from table1 where Field4 = Field4_max) as ts4max
from (
    select
        min(Field1) as Field1_min, max(Field1) as Field1_max,
        min(Field2) as Field2_min, max(Field2) as Field2_max,
        min(Field3) as Field3_min, max(Field3) as Field3_max,
        min(Field4) as Field4_min, max(Field4) as Field4_max
    from table1
) S

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM