我的表格格式如下:
ID curr Date Bid Ask
1 AUD/NZD 20090501 00:00:00.833 1.2866 1.28733
2 AUD/NZD 20090501 01:01:01.582 1.28667 1.2874
3 AUD/NZD 20090501 02:01:01.582 1.28667 1.28747
现在我需要选择Bid和Ask列的更改并存储到另一个表中...结果应如下所示
Bid Change Ask Change
0.0000700 0.0000700
0.0000000 0.0000700
select
t1.id,
t1.curr,
t1.date,
t1.bid,
t1.bid - t2.bid [Bid Change],
t1.ask,
t1.ask - t2.ask [Ask Change]
from tbltest t1
left join tbltest t2 on t1.ID = t2.ID + 1
order by date
此查询会返回正确的所有内容,但出价更改和询问更改的格式除外,如下所示
BID Change ASK CHANGE
7.00000000000145E-05 7.00000000000145E-05
对于如何处理这种情况我真的很无能为力......任何一点帮助都会起作用。
提前致谢!
答案 0 :(得分:1)
我似乎没有必要将它们存储在不同的表中,您可以使用APPLY
动态计算它们,这样对基础数据的任何更改都不会导致您的更改数据陈旧:
SELECT T.*,
BidChange = t.Bid - prev.Bid,
AskChange = t.Ask - prev.Ask
FROM T
OUTER APPLY
( SELECT TOP 1 T2.Bid, T2.Ask
FROM T AS T2
WHERE T2.Curr = T.Curr
AND T2.Date < T.Date
ORDER BY T2.Date DESC
) AS prev;
如果您经常需要这样的话,那么您可能需要考虑一个视图,而不是将其存储在表格中。