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。
我有一个 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。