我想生成一个新表,该表根据其主键显示另一个表的第一个条目和最后一个条目。
我有一个仪表表,其中包含所有Meter Ids
米表
MeterId CostPerUnit
1 1.23
2 4.14
3 5.31
4 13.13
然后我有一个Measurements表,该表每半小时记录一次
测量表
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
,但不确定如何迭代所有的表ID)注意: -测量表由1000万行和8000米ID组成。
答案 0 :(得分:2)
简单的最小/最大将在此处工作。
SELECT
FirstAvailability = MIN(StartTime),
LastAvailability = MAX(StartTime)
FROM
Measurement
GROUP BY
MeterID
ORDER BY
MeterID
答案 1 :(得分:1)
您可以使用聚合函数min()max()并按
分组 select a.MeterId, min(a.StartTime), max(StartTime)
from Measurement
group by a.Meter
答案 2 :(得分:1)
使用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