sql 插入查询 select

sql query to with insert select

我有一个 table,格式如下:

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

现在我需要 select 更改 Bid 和 Ask 列并存储到不同的 table...结果应该如下所示

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

此查询returns 除了 Bid Change 和 Ask Change 的格式外,其他所有内容都正确...如下所示

 BID Change            ASK CHANGE
7.00000000000145E-05  7.00000000000145E-05

我真的不知道如何处理这种情况...任何一点帮助都会起作用。

提前致谢!

我认为没有必要将它们存储在不同的 table,您可以使用 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;

如果这是您经常需要的东西,那么您可能需要考虑一个视图,而不是将其存储在 table。