Excel中的SQL条件更新

时间:2014-11-10 10:52:51

标签: sql excel oracle

我正在尝试使用从Excel中提取更改的查询来更新我的数据库。

DB看起来像这样:

表价格表:

  

ID ...... PriceID .......价格........ PriceWithTax

     

1 ........... 1 .............. 100 ............... 110

     

1 ........... 2 ............... 90 ................. 99

     

1 ........... 3 ............... 80 ................. 88

PriceID表示此商品可以有3种不同的价格(针对不同的客户)。

TO BE excel文件包含的内容是:

  

ItemCode .........说明......... Price1 ....... Price2 ....... Price3

     

ABCD ...................牛排.............. 100 ........... ..90 ............ 80

到目前为止,我可以逐个更新,但是我想在一个查询中完成所有操作。

这是我输入Price1值的查询的第一部分 - 但它会更改所有值:

UPDATE  dbo.PriceList
SET     PriceList.fExclPrice = Price1
FROM        StockItem INNER JOIN PriceList ON StockItem.StockID = PriceList.StockID
INNER JOIN OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
'Excel 8.0;Database=C:\Update.xls;', 
'SELECT ItemCode, Description, Price1
FROM [Update$]')
ON StockItem.ItemCode COLLATE DATABASE_DEFAULT = ItemCode

第二部分是这样的:

UPDATE  dbo.PriceList
SET     PriceList.fExclPrice = Price2
FROM        StockItem INNER JOIN PriceList ON StockItem.StockID = PriceList.StockID
INNER JOIN OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
'Excel 8.0;Database=C:\Update.xls;', 
'SELECT ItemCode, Description, Price2
FROM [Update$]')
ON StockItem.ItemCode COLLATE DATABASE_DEFAULT = ItemCode Where PriceList.PriceID = 2

最后一部分是针对PriceWithTax:

  

更新PriceList SET PriceWithTax = ROUND(fExclPrice * 1.14,2)

将这些组合成1个查询的最佳方法是什么?

谢谢!

0 个答案:

没有答案