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.时间)
  ) 

解决方案 »

  1.   

    可能需要时间条件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.时间)
      )
      

  2.   

    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
    */
      

  3.   

    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
    */
      

  4.   

    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 点 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.点
      

  5.   

    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
    */
      

  6.   

    上面是取时间最小的。随意取一条:
    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 [点]
      

  7.   


    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.点 
      

  8.   


    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
    */