已知:
select b.districtname,a.oldaveprice,a.OldPriceDate from HousePriceWave a,housename b  where a.districtid=b.districtid order by b.districtname,a.OldPriceDate  desc
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
aaa      1200   2006-06-04 12:18:08.000
aaa      1500   2006-06-04 12:16:09.000
aaa      1000   2006-06-04 12:13:16.000cccc     2000   2006-06-04 12:23:13.000
cccc     1500   2006-06-04 12:22:58.000澳兰名门 1000   2006-06-04 12:13:16.000
鸿运润园 1000   2006-06-04 12:13:16.000
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++现在要输出这样的结果++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
字段A    当前价格   趋势  浮动价格  日期
aaa       1200       下滑  -300      2006-06-04 12:18:08.000
cccc      2000       上涨  500       2006-06-04 12:23:13.000
澳兰名门  1000       平稳  0         2006-06-04 12:13:16.000
鸿运润园  1000       平稳  0         2006-06-04 12:13:16.000
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
谢谢指点!
附注:当前价格 是最新的价格, 浮动价格是根据最新两次价格的比较结果

解决方案 »

  1.   

    有些晕凑合着看看吧create table #tt(id int,字段A varchar(10),当前价格 int,价格日期 datetime)
    insert into #tt select 1,'aaa',1200,'2006-06-04 12:18:08.000'
    union all select 2,'aaa',1500,'2006-06-04 12:16:09.000'
    union all select 3,'aaa',1000,'2006-06-04 12:13:16.000'
    union all select 4,'cccc',2000,'2006-06-04 12:23:13.000'
    union all select 5,'cccc',1500,'2006-06-04 12:22:58.000'
    union all select 6,'澳兰名门',1000,'2006-06-04 12:13:16.000'
    union all select 7,'鸿运润园',1000,'2006-06-04 12:13:16.000'select e.字段A,e.当前价格,
    趋势=(case when (e.当前价格-f.上次价格)>0 then '上涨'
    when (e.当前价格-f.上次价格)<0 then '下滑' else '平稳' end),
    浮动价格=(case when (e.当前价格-f.上次价格) is null then 0 else e.当前价格-f.上次价格 end),
    e.日期 from
    (select top 100 percent a.字段A,a.当前价格,b.日期 from #tt a,(select 字段A,max(价格日期) as 日期 from #tt group by 字段A) b 
    where a.字段A=b.字段A and a.价格日期=b.日期 order by a.字段A) e
    left join
    (select #tt.字段A,上次价格=#tt.当前价格 from #tt,
    (select 字段A,max(价格日期) as 上次价格日期 from #tt where id not in (select c.id from #tt c,
    (select 字段A,max(价格日期) as 日期 from #tt group by 字段A) d
     where c.字段A=d.字段A and c.价格日期=d.日期) group by 字段A ) t where #tt.字段A=t.字段A and #tt.价格日期=t.上次价格日期
    ) f
     on e.字段A=f.字段A
      

  2.   

    DECLARE @TEST_DATA TABLE(ITEM VARCHAR(50), PRICE INT, RECORDTIME DATETIME)INSERT INTO @TEST_DATA
    SELECT 'aaa', 1200, '2006-06-04 12:18:08.000'
    UNION
    SELECT 'aaa', 1500, '2006-06-04 12:16:09.000'
    UNION
    SELECT 'aaa', 1000, '2006-06-04 12:13:16.000'
    UNION
    SELECT 'cccc', 2000, '2006-06-04 12:23:13.000'
    UNION
    SELECT 'cccc', 1500, '2006-06-04 12:22:58.000'
    UNION
    SELECT '澳兰名门', 1000, '2006-06-04 12:13:16.000'
    UNION
    SELECT '鸿运润园', 1000, '2006-06-04 12:13:16.000'SELECT
    字段A,
    当前价格,
    CASE
    WHEN 当前价格 - 上次价格 > 0 THEN '上涨'
    WHEN 当前价格 - 上次价格 < 0 THEN '下滑'
    ELSE '平稳'
    END AS 趋势,
    ISNULL(当前价格 - 上次价格, 0) AS 浮动价格,
    日期
    FROM
    (SELECT
    ITEM AS 字段A,
    (SELECT PRICE FROM @TEST_DATA WHERE ITEM = A.ITEM AND RECORDTIME = MAX(A.RECORDTIME)) AS 当前价格,
    (SELECT PRICE FROM @TEST_DATA WHERE RECORDTIME =
    (SELECT MAX(RECORDTIME) FROM @TEST_DATA WHERE ITEM = A.ITEM AND RECORDTIME < MAX(A.RECORDTIME))) AS 上次价格,
    MAX(RECORDTIME) AS 日期
    FROM @TEST_DATA AS A
    GROUP BY ITEM) AS MID
    /*
    运行结果aaa 1200 下滑 -300 2006-06-04 12:18:08.000
    cccc 2000 上涨 500 2006-06-04 12:23:13.000
    澳兰名门 1000 平稳 0 2006-06-04 12:13:16.000
    鸿运润园 1000 平稳 0 2006-06-04 12:13:16.000*/
      

  3.   

    SELECT
    字段A,
    当前价格,
    CASE
    WHEN 当前价格 - 上次价格 > 0 THEN '上涨'
    WHEN 当前价格 - 上次价格 < 0 THEN '下滑'
    ELSE '平稳'
    END AS 趋势,
    ISNULL(当前价格 - 上次价格, 0) AS 浮动价格,
    日期
    FROM
    (SELECT
    districtname AS 字段A,
    (SELECT oldaveprice FROM TEST_DATA WHERE districtname = A.districtname AND OldPriceDate = MAX(A.OldPriceDate )) AS 当前价格,
    (SELECT oldaveprice FROM TEST_DATA WHERE OldPriceDate =
    (SELECT MAX(OldPriceDate) FROM TEST_DATA WHERE districtname = A.districtname AND OldPriceDate < MAX(A.OldPriceDate ))) AS 上次价格,
    MAX(OldPriceDate) AS 日期
    FROM TEST_DATA AS A
    GROUP BY districtname) AS MID
    搞顶,谢谢楼上的几位