数据如下id     date        price
1      2012-10-01   5
2      2012-10-02   6   
3      2012-10-03   8
4      2012-10-04   3
5      2012-10-05   7如何用一条语句得到如下结果(分别求出最小日期及最大日期的price)date            price     date       price
2012-01-01      5       2012-10-05    7

解决方案 »

  1.   

    select * from (select top 1 * from tb order by date)t,(select top 1 * from tb order by date desc)t1
      

  2.   

    create table tb(id int, date datetime, price int)
    insert into tb values(1 , '2012-10-01', 5)
    insert into tb values(2 , '2012-10-02', 6) 
    insert into tb values(3 , '2012-10-03', 8)
    insert into tb values(4 , '2012-10-04', 3)
    insert into tb values(5 , '2012-10-05', 7)
    goselect m.date , m.price,
           n.date , n.price
    from 
    (select top 1 date , price from tb order by date) m,
    (select top 1 date , price from tb order by date desc) n
    /*
    date                                                   price       date                                                   price       
    ------------------------------------------------------ ----------- ------------------------------------------------------ ----------- 
    2012-10-01 00:00:00.000                                5           2012-10-05 00:00:00.000                                7(所影响的行数为 1 行)
    */select * from (select top 1 date , price from tb order by date) t
    union all
    select * from (select top 1 date , price from tb order by date desc) t
    /*
    date                                                   price       
    ------------------------------------------------------ ----------- 
    2012-10-01 00:00:00.000                                5
    2012-10-05 00:00:00.000                                7(所影响的行数为 2 行)
    */drop table tb
      

  3.   

    SELECT
    b.maxDate,
    a.price,
    b.minDate,
    a.price
    FROM [table] AS a
    INNER JOIN
    (SELECT
      id,
      MAX(date) AS maxDate,
      MIN(date) AS minDate,
      FROM [table]
      GROUP BY price) AS b
    ON a.id = b.id
      

  4.   

    select * from
    (
    --最大
    select top 1 date,price from 表名 order by date desc
    ) x ,(
    --最小
    select top 1 date,price from 表名 order by date asc
    ) y
      

  5.   

        新手请教一下。 用union不行吗?
      

  6.   

    if object_id('ge','u') is not null
    drop table ge
    create table ge(
    id int identity(1,1),
    date datetime,
    price real)
    insert into ge select '2012-10-01',5 union all
    select '2012-10-02',6 union all
    select '2012-10-03',8 union all
    select '2012-10-04',3 union all
    select '2012-10-05',7
    go
    with cs as(
    select c_id=row_number() over(order by date),* from ge)
    select date,price from cs
    where c_id=1 or id=SCOPE_IDENTITY() 
      

  7.   

    select * from (select top 1 * from tb order by date)t,(select top 1 * from tb order by date desc)t1
      

  8.   

    Select * From
    (
    Select Max(date) as dateMax, Min(date) as dateMin From T
    ) as a
    inner join T as t1 on a.dateMax = t1.date
    inner jon T as t2 on a.dateMin = t2.date
      

  9.   

    select * from (select top 1 * from tb order by date) t,(select top 1 * from tb order by date desc) t1
      

  10.   

    mysql版select * from(
    (select date,val from dfTable order by date asc limit 1) a
    ,
    (select date,val from dfTable order by date desc limit 1) d
    )
      

  11.   

    select a.date,a.price,b.date,b.price from(select top 1 date,price from table order by date asc)a,(select top 1 date,price from table order by date desc)b where 1=1