22,301
社区成员




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 点)b
where 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 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 点)b
where 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 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 [点]
,[最大数据]=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 * 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
*/
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(数据) 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
*/
select a.点,a.数据 as 最大数据,a.时间 as 对大数据对应时间,
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.时间)
)
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.时间)
)