假設我有表@A
,其中有一系列行,其中有一行包含NULL
值,對於這些行,我有表@B
(可能更少,或者更多)行的值,如何將@B
的值應用於@A
的行以填充NULL
,而不更改@B
? (我沒有使用遊標,我的意思是:遊標相當平凡)@A
和@B
都是內存中的(表變量),只有少量的行,所以我們不必擔心大數據集。將一個表中的一系列值應用到另一個表中的一系列行中
例如,如果我有:
DECLARE @A TABLE
(
x INT,
y NVARCHAR(20)
)
INSERT INTO @A (y) VALUES ('aaa'), ('bbb'), ('ccc')
DECLARE @B TABLE
(
x INT
)
INSERT INTO @B (X) values (1), (2)
現在我有@A
:
x y ----------- ----------- NULL aaa NULL bbb NULL ccc
和@B
:
x ----------- 1 2
...我想更新@A
基於所以它有:
x y ----------- ----------- 1 aaa 2 bbb NULL ccc
...理想地以該順序(例如,在@B
最低值變爲x
用於@A
最低y
,那麼下一個,等等)。
我覺得有一個相當簡單的方法來做到這一點,但我沒有收到有...
他改變了他的問題,但你的查詢仍然有效 – Jaques 2014-11-25 13:51:09
非常好,謝謝 - 我想'ROW_NUMBER'可能會進入它的某處... – 2014-11-25 13:56:44
@GerethD,你忘記了你的其他部分=在連接中,我修復了它雖然你 – Jaques 2014-11-25 13:58:00