mssql不同结果

dly7yett  于 2021-06-15  发布在  Mysql
关注(0)|答案(3)|浏览(325)

我想生成一个新表,根据主键显示另一个表的第一个和最后一个条目。
我有一个表,里面有所有的表 Meter Ids Jmeter 台

MeterId CostPerUnit
1    1.23
2    4.14
3    5.31
4    13.13

然后我有一个测量表,它每半小时记录一次
测量表

MeterId    StartTime    NumberOfUnits
1    2002-12-01 00:01:00    25
1    2002-12-01 00:30:00    78
1    2003-09-01 02:30:00    30
1    2008-07-02 01:00:00    15
2    1999-01-01 00:30:00    23
2    2000-03-23 05:03:00    30
2    2008-04-18 18:30:00    25
3    2006-04-03 12:00:00    30
4    2004-04-04 11:30:00    13
4    2008-09-09 15:00:00    15

结果表应如下所示:

MeterId    FirstAvailability    LastAvailability
1    2002-12-01    2008-07-02
2    1999-01-01    2008-04-18
3    2006-04-03    2006-04-03
4    2004-04-04    2008-09-09

所以:
日期必须是唯一的一天(我想我可以使用 SELECT DISTINCT CAST(StartTime AS DATE) )
找到第一个和最后一个条目(我想我可以使用 ORDER BY ASC 以及 ORDER BY DESC 为特定的meterid启用,但不确定如何迭代所有的meter id)
注:测量表由1000万行和8000米ID组成。

u2nhd7ah

u2nhd7ah1#

简单的最小值/最大值在这里工作。

SELECT
    FirstAvailability = MIN(StartTime),
    LastAvailability = MAX(StartTime)
FROM
    Measurement
GROUP BY
    MeterID
ORDER BY
    MeterID
mzmfm0qo

mzmfm0qo2#

可以使用聚合函数min()max()和group by

select a.MeterId, min(a.StartTime), max(StartTime)
    from Measurement 
    group by a.Meter
r7knjye2

r7knjye23#

使用max(),min()

select t1.meterid, convert(date,max(StartTime)) LastAvailability,
     convert(date,min(StartTime))as FirstAvailability    
     table1 t1 join table2 t2 t1.metricid=t2.metricid
    group by t1.meterid

相关问题