我有一张这样的表: -
ID Model Value
DAX FAB01
DAZ FAB01
DAA FAB01
DAX FAB02
DAZ FAB02
DAA FAB02
我需要更新表格,以便最终输出如下: -
ID Model Value
DAX FAB01 123
DAZ FAB01 789
DAA FAB01 963
DAX FAB02 456
DAZ FAB02 951
DAA FAB02 753
我尝试了下面的内容: -
UPDATE [TABLE]
SET VALUE = CASE
WHEN MODEL='FAB01' AND ID='DAX' THEN '123'
WHEN MODEL='FAB01' AND ID='DAZ' THEN '789'
WHEN MODEL='FAB01' AND ID='DAA' THEN '963'
WHEN MODEL='FAB02' AND ID='DAX' THEN '456'
WHEN MODEL='FAB02' AND ID='DAX' THEN '951'
WHEN MODEL='FAB02' AND ID='DAX' THEN '753'
ELSE VALUE
END
重新运行上述&它现在有效。
感谢。
答案 0 :(得分:3)
UPDATE [TABLENAME]
SET VALUE = 123
WHERE ID = "DAX" AND MODEL = "FAB01"
Etc..repeat for each row
答案 1 :(得分:2)
延伸到bAN的答案。更新应该是 -
UPDATE [TABLENAME]
SET [VALUE] = 123
WHERE ID = 'DAX'
AND Model = 'FAB01'
唯一性在表格中的两列(ID和模型)上。
答案 2 :(得分:2)
所有陈述:
UPDATE YourTableName SET [Value] = 123 WHERE [ID] = 'DAX' AND [model] = 'FAB01'
GO
UPDATE YourTableName SET [Value] = 789 WHERE [ID] = 'DAZ' AND [model] = 'FAB01'
GO
UPDATE YourTableName SET [Value] = 963 WHERE [ID] = 'DAA' AND [model] = 'FAB01'
GO
UPDATE YourTableName SET [Value] = 456 WHERE [ID] = 'DAX' AND [model] = 'FAB02'
GO
UPDATE YourTableName SET [Value] = 951 WHERE [ID] = 'DAZ' AND [model] = 'FAB02'
GO
UPDATE YourTableName SET [Value] = 753 WHERE [ID] = 'DAA' AND [model] = 'FAB02'
GO
答案 3 :(得分:0)
或者,您可以尝试使用OPENROWSET()
。这是一个例子:
UPDATE YourTable
SET Value = xls.ExcelColumnValue
FROM OPENROWSET(...) xls
WHERE YourTable.ID = xls.ExcelColumnID
AND YourTable.Model = xls.ExcelColumnModel
xls.
之后的所有列名都是任意的,您应该用实际的列名替换它们。基本上,您只需使用SELECT * FROM OPENROWSET(...)
即可找到它们。 (您也可以根据以下信息提前了解它们。)
现在是...
部分。在这里定义源,特别是指定文件格式,文件名,工作表名称,还指定要使用的中间层软件,无论这意味着什么,以及源的某些属性。根据使用的Excel版本,您可以尝试以下变体:
OPENROWSET ( 'Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;HDR=YES;Database=C:\path\file.xls', 'SELECT * FROM [sheet name$]' )
OPENROWSET ( 'Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;HDR=YES;Database=C:\path\file.xls', 'SELECT * FROM [sheet name$]' )
使用实际文件名和工作表名称相应地替换斜体。
HDR=YES;
选项指定第一行定义列名。如果在您的情况下第一行包含所有其他行的数据,只需删除此选项。