TSQL - 自己更新表

Fre*_*ars 5 t-sql sql-server

(4列,为简化起见,简化)

Record | Item | Price | Zone

数据

1      | 100  | 10.00 | A
2      | 100  | NULL  | B
3      | 100  | NULL  | C
4      | 200  | 25.00 | A
5      | 200  | NULL  | B

尝试NULL使用非NULLs 的相应值更新s Item.因此,所有项目100都将读取10.00并且项目200都将读取25.00.

我觉得这应该是超级简单的,但无法弄清楚自我参考.

谢谢

Cle*_*gic 15

你去吧

UPDATE a
SET a.Price=b.Price
FROM  Item AS a
INNER JOIN Item AS b
ON a.item=b.item
WHERE a.Price is NULL AND b.price is NOT NULL
Run Code Online (Sandbox Code Playgroud)

或者,如果有多个非零价格,并且您想要选择最高价格.

 UPDATE a
 SET a.Price=(SELECT MAX(b.PRICE) FROM ITEM AS b WHERE b.Item=a.Item and b.Price is not null )
 FROM  Item AS a
 WHERE a.Price is NULL  
Run Code Online (Sandbox Code Playgroud)