select a.点,a.数据 as 最大数据,a.时间 as 对大数据对应时间,
b.数据 as 最小数据,b.时间 as 最小数据对应时间
from tab a,tab b
where a.点=b.点
and not exists (
select 1 from tab
where 点=a.点
and (数据>a.数据 or 数据=a.数据 and 时间<a.时间)
)
and not exists (
select 1 from tab
where 点=b.点
and (数据<b.数据 or 数据=a.数据 and 时间<a.时间)
)
b.数据 as 最小数据,b.时间 as 最小数据对应时间
from tab a,tab b
where a.点=b.点
and not exists (
select 1 from tab
where 点=a.点
and (数据>a.数据 or 数据=a.数据 and 时间<a.时间)
)
and not exists (
select 1 from tab
where 点=b.点
and (数据<b.数据 or 数据=a.数据 and 时间<a.时间)
)
b.数据 as 最小数据,b.时间 as 最小数据对应时间
from tab a,tab b
where a.点=b.点
and a.时间 between 时间1 and 时间2
and b.时间 between 时间1 and 时间2
and not exists (
select 1 from tab
where 点=a.点
and 时间 between 时间1 and 时间2
and (数据>a.数据 or 数据=a.数据 and 时间<a.时间)
)
and not exists (
select 1 from tab
where 点=b.点
and 时间 between 时间1 and 时间2
and (数据<b.数据 or 数据=a.数据 and 时间<a.时间)
)
INSERT @TB
SELECT 1, 100, '1:23' UNION ALL
SELECT 1, 100, '1:24' UNION ALL
SELECT 1, 80, '1:25' UNION ALL
SELECT 1, 90, '1:26' UNION ALL
SELECT 1, 5, '1:27' UNION ALL
SELECT 2, 180, '1:23' UNION ALL
SELECT 2, 190, '1:25' UNION ALL
SELECT 2, 111, '1:27'SELECT * FROM (
SELECT 点,MAX(数据) AS 最大数据,MIN( 时间) AS 最小时间 FROM @TB GROUP BY 点) M
JOIN (
SELECT 点,MIN(数据) AS 最小数据,MIN( 时间) AS 最小时间 FROM @TB GROUP BY 点) N
ON M.点=N.点
/*
点 最大数据 最小时间 点 最小数据 最小时间
----------- ----------- ---------- ----------- ----------- ----------
1 100 1:23 1 5 1:23
2 190 1:23 2 111 1:23
*/
INSERT @TB
SELECT 1, 100, '1:23' UNION ALL
SELECT 1, 100, '1:24' UNION ALL
SELECT 1, 80, '1:25' UNION ALL
SELECT 1, 90, '1:26' UNION ALL
SELECT 1, 5, '1:27' UNION ALL
SELECT 2, 180, '1:23' UNION ALL
SELECT 2, 190, '1:25' UNION ALL
SELECT 2, 111, '1:27'SELECT * FROM (
SELECT 点,MAX(数据) AS 最大数据,MIN( 时间) AS 大数据对应时间 FROM @TB GROUP BY 点) M
JOIN (
SELECT 点,MIN(数据) AS 最小数据,MAX( 时间) AS 小数据对应时间 FROM @TB GROUP BY 点) N
ON M.点=N.点
/*点 最大数据 大数据对应时间 点 最小数据 小数据对应时间
----------- ----------- ---------- ----------- ----------- ----------
1 100 1:23 1 5 1:27
2 190 1:23 2 111 1:27
*/
INSERT @TB
SELECT 1, 100, '1:23' UNION ALL
SELECT 1, 100, '1:24' UNION ALL
SELECT 1, 80, '1:25' UNION ALL
SELECT 1, 90, '1:26' UNION ALL
SELECT 1, 5, '1:27' UNION ALL
SELECT 2, 180, '1:23' UNION ALL
SELECT 2, 190, '1:25' UNION ALL
SELECT 2, 111, '1:27'SELECT * FROM (
select 点 as 点,数据 as 大数据,时间 as 大时间 from @TB t where not exists(select 1 from @TB where 数据>t.数据 and t.点=点) )M
join(select 点 as 点,数据 as 小数据,时间 as 小时间 from @TB t where not exists(select 1 from @TB where 数据<t.数据 and t.点=点)) N
on M.点=N.点
INSERT @TB
SELECT 1, 100, '1:23' UNION ALL
SELECT 1, 100, '1:24' UNION ALL
SELECT 1, 80, '1:25' UNION ALL
SELECT 1, 90, '1:26' UNION ALL
SELECT 1, 5, '1:27' UNION ALL
SELECT 2, 180, '1:23' UNION ALL
SELECT 2, 190, '1:25' UNION ALL
SELECT 2, 111, '1:27'
select [点]
,[最大数据]=max([数据])
,[对大数据对应时间]=(select min([时间]) from @TB where [点]=t.[点] and [数据]=max(t.[数据]))
,[最小数据]=min([数据])
,[最小数据对应时间]=(select min([时间]) from @TB where [点]=t.[点] and [数据]=min(t.[数据]))
from @TB t
group by [点]/*
点 最大数据 对大数据对应时间 最小数据 最小数据对应时间
----------- ----------- ---------- ----------- ----------
1 100 1:23 5 1:27
2 190 1:25 111 1:27
*/
DECLARE @TB TABLE(点 INT, 数据 INT, 时间 VARCHAR(10))
INSERT @TB
SELECT 1, 100, '1:23' UNION ALL
SELECT 1, 100, '1:24' UNION ALL
SELECT 1, 80, '1:25' UNION ALL
SELECT 1, 90, '1:26' UNION ALL
SELECT 1, 5, '1:27' UNION ALL
SELECT 2, 180, '1:23' UNION ALL
SELECT 2, 190, '1:25' UNION ALL
SELECT 2, 111, '1:27'
select [点]
,[最大数据]=max([数据])
,[对大数据对应时间]=(select top 1 [时间] from @TB where [点]=t.[点] and [数据]=max(t.[数据]) order by newid())
,[最小数据]=min([数据])
,[最小数据对应时间]=(select top 1 [时间] from @TB where [点]=t.[点] and [数据]=min(t.[数据]) order by newid())
from @TB t
group by [点]
DECLARE @TB TABLE(点 INT, 数据 INT, 时间 VARCHAR(10))
INSERT @TB
SELECT 1, 100, '1:23' UNION ALL
SELECT 1, 100, '1:24' UNION ALL
SELECT 1, 80, '1:25' UNION ALL
SELECT 1, 90, '1:26' UNION ALL
SELECT 1, 5, '1:27' UNION ALL
SELECT 2, 180, '1:23' UNION ALL
SELECT 2, 190, '1:25' UNION ALL
SELECT 2, 111, '1:27'
select * from(SELECT 点,最大数据=max(数据),大数据对应时间=(select min(时间) AS 大数据对应时间 from @TB where 点=A.点 and 数据=max(A.数据)) from @TB A group by 点)a
,
(SELECT 点,最小数据=min(数据),小数据对应时间=(select max(时间) AS 大数据对应时间 from @TB where 点=B.点 and 数据=min(B.数据)) from @TB B group by 点)bwhere a.点=b.点
DECLARE @TB TABLE(点 INT, 数据 INT, 时间 VARCHAR(10))
INSERT @TB
SELECT 1, 100, '1:23' UNION ALL
SELECT 1, 100, '1:24' UNION ALL
SELECT 1, 80, '1:25' UNION ALL
SELECT 1, 90, '1:26' UNION [code=SQL]ALL
SELECT 1, 5, '1:27' UNION ALL
SELECT 2, 180, '1:23' UNION ALL
SELECT 2, 190, '1:25' UNION ALL
SELECT 2, 111, '1:27'select * from(SELECT 点,最大数据=max(数据),大数据对应时间=(select min(时间) from @TB where 点=A.点 and 数据=max(A.数据)) from @TB A group by 点)a
,
(SELECT 点,最小数据=min(数据),小数据对应时间=(select max(时间) from @TB where 点=B.点 and 数据=min(B.数据)) from @TB B group by 点)bwhere a.点=b.点 /*
点 最大数据 对大数据对应时间 最小数据 最小数据对应时间
----------- ----------- ---------- ----------- ----------
1 100 1:23 5 1:27
2 190 1:25 111 1:27
*/