列之间的SQL交换值

Mar*_*lli 0 sql vertica

由于导入错误,我有这种奇怪的情况。

假设一个表:

date         feat1   feat2
2019-01-01      a      z
2019-01-01      a      z
2019-01-03      z      a
2019-01-04      z      a
2019-01-05      z      a
Run Code Online (Sandbox Code Playgroud)

从日期开始,我们交换了值feat1和列feat2。结果我在找

date         feat1   feat2
2019-01-01      a      z
2019-01-01      a      z
2019-01-03      a      z
2019-01-04      a      z
2019-01-05      a      z
Run Code Online (Sandbox Code Playgroud)

如何在不创建临时列的情况下通过一条更新语句解决此问题?我正在使用Vertica DB

SAS*_*SAS 5

这样的事情将在TSQL中起作用,您可以将其用作基础:

UPDATE tbl SET feat1 = feat2, feat2 = feat1 WHERE date >= 'YYYY-MM-DD'
Run Code Online (Sandbox Code Playgroud)

  • 那应该在任何自重的数据库系统中都有效。 (4认同)