簡體   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