SQL:在同一个表中插入新创建的列
问题描述:
我有如下表:SQL:在同一个表中插入新创建的列
create table Finance
(
[Product] int
,[Timestamp] datetime
,[Price] numeric(16, 4)
)
INSERT INTO Finance([Product], [Timestamp], [Price])
VALUES
(5678, '20080101 12:00:00', 12.34)
,(5678, '20080101 12:01:00', NULL)
,(5678, '20080101 12:02:00', NULL)
,(5678, '20080101 12:03:00', 23.45)
,(5678, '20080101 12:04:00', NULL)
,(5679, '20080101 13:04:00', NULL)
,(5679, '20080101 13:05:00', 30.35)
,(5679, '20080101 13:06:00', NULL)
和下面的查询将返回所需的输出:
SELECT ISNULL(A.Price, B.Price) N_Price -- A.Product, A.Timestamp, A.Price,
FROM Finance A
OUTER APPLY ( SELECT TOP 1 *
FROM Finance
WHERE Product = A.Product AND Timestamp < A.Timestamp
AND Price IS NOT NULL
ORDER BY Product, Timestamp DESC) B
而且我想插入列N_Price返回通过查询到原始财务表。有没有简单快捷的方法,该怎么做?
答
这应该一次更新工作将列
alter table finance add n_price numeric(16,1)
update a
set n_price=ISNULL(A.Price, B.Price)
from finance a
outer apply
(
SELECT TOP 1 price
FROM Finance
WHERE Product = A.Product AND Timestamp < A.Timestamp
AND Price IS NOT NULL
ORDER BY Product, Timestamp DESC) B
+0
很好,非常感谢! – mateskabe
相反,我会去同一个视图 – TheGameiswar
这就是我也想知道,但我需要插入列。 – mateskabe
这是一次性插入吗? – TheGameiswar