已知:
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
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
谢谢指点!
附注:当前价格 是最新的价格, 浮动价格是根据最新两次价格的比较结果
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
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
谢谢指点!
附注:当前价格 是最新的价格, 浮动价格是根据最新两次价格的比较结果
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
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*/
字段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
搞顶,谢谢楼上的几位