我有以下数据(SQL server 2014):
select [Event],
min([Start ]) [Start ],
max([End ]) [End ],
avg([Pres_Avg]) [Pres_Avg],
Min([Pres_Min]) [Pres_Min],
Max([Pres_Max]) [Pres_Max]
from y
group by [Event], g
我使用以下查询来获得Pres_Avg的平均值以及Pres_Min和Pres_Max的最小值和最大值:
Event Start End Pres_Avg Pres_Min Pres_Max Pres_Start Pres_End
11-PSV-401002A 4-4-16 12:51 4-4-16 15:09 6.092661 6.05642176 6.13351011 6.07731962 6.05952168
我想得到Pres_Start,其中Pres_Start为min([Start])= 6.07731962,Pres_End为Pres_End为max([End])= 6.05952168。 如何在同一个查询中创建它?
select [Event],
min([Start ]) [Start ],
max([End ]) [End ],
avg([Pres_Avg]) [Pres_Avg],
Min([Pres_Min]) [Pres_Min],
Max([Pres_Max]) [Pres_Max],
min([Start ]) and Pres_Start value,
max([End ]) and Pres_End value
from y
group by [Event], g
我想在一个查询中找到类似下面的代码,因为我已经获得了分钟和开始日期:
$.each(re, function(i, val) {
alert(val.id + "=" + val.gdate);
});
感谢
答案 0 :(得分:1)
您需要再次使用表格y再次加入,以检索具有所需开始值和结束值的行。您可以通过将查询放入子查询,然后与y连接两次来完成此操作:
select y_grouped.*
, y_start.Pres_Start
, y_end.Pre_End
from ( select [Event],
min([Start ]) [Start ],
max([End ]) [End ],
avg([Pres_Avg]) [Pres_Avg],
Min([Pres_Min]) [Pres_Min],
Max([Pres_Max]) [Pres_Max]
from y
group by [Event], g ) y_grouped
inner join y y_start on y_grouped.[Start ] = y_start.[Start ]
inner join y y_end on y_grouped.[End ] = y_end.[End ]
如果没有样本数据来运行它,很难完全确定它会工作,但是试一试,让我们知道结果如何!
另请注意,如果您有多个行具有相同的开始日期或相同的结束日期,则可以在此查询中获得多行。如果是这种情况,那么请指定如何在这两行之间进行选择以获得Pres_Start和Pres_End值。
对于单行方法,您可以执行以下操作:
select [Event],
min([Start ]) [Start ],
max([End ]) [End ],
avg([Pres_Avg]) [Pres_Avg],
Min([Pres_Min]) [Pres_Min],
Max([Pres_Max]) [Pres_Max],
(select top 1 Pres_Start from @y y2 where y1.[Event] = y2.event and y1.g = y2.g order by [Start ] asc) Pres_Start,
(select top 1 Pres_End from @y y2 where y1.[Event] = y2.event and y1.g = y2.g order by [End ] desc) Pres_End
from @y as y1
group by [Event], g