我有一个将CSV文件转储到临时表的过程,然后我将格式化数据以放入实际的表中。
我遇到了一个问题,有时其中一个值出现在科学记数法中,而我的表被设置为DECIMAL(13,9)。本质上,我想要做的是将科学记数法中的任何值更新为0,因为它们太低了,在这个用例中可能也是0。
有9列可能具有这种科学表示法,我知道我可能只有9条update语句,每次更新每列中的一条。如果有必要,我可以这么做,只是觉得有人可能有比这更好的主意。
所以,我的问题是:有没有办法用一条语句更新所有这9列?
以下是数据集:
SELECT Value, MyPropOccupancy, CompSetOccupancy, IndexOccupancy,
MyPropADR, CompSetADR, IndexADR, MyPropRevPar, CompSetRevPar, IndexRevPar
FROM #fileColumnsChanges

因此,在这种情况下,我希望将CompSetOccupancy (年初至今)和CompSetADR (运行12个月)更新为0。
发布于 2020-01-28 06:49:25
你可以在这里用9个‘UPDATE’编写一个setter。如果临时表中数值基于(n)varchar,则需要在重置实际值之前考虑这一点。下面我使用0.0001作为示例阈值:
UPDATE
#fileColumnsChanges
SET
CompSetOccupancy = IIF(CAST(CompSetOccupancy AS FLOAT) < 0.0001, 0, CompSetOccupancy)
, CompSetADR = IIF(CompSetADR AS FLOAT) < 0.0001, 0, CompSetADR);否则,您可以直接省略CAST
CompSetOccupancy = IIF(CompSetOccupancy < 0.0001, 0, CompSetOccupancy)显然,您必须使用其他字段修改UPDATE。
另外,如果你能向我们展示一下实际的#表中的内容,它将有助于回答这样的问题。
https://stackoverflow.com/questions/59939630
复制相似问题