基于跨多个列的条件在sql中创建列

vpfxa7rd  于 2021-08-09  发布在  Java
关注(0)|答案(2)|浏览(243)

我希望在sql表中创建一个列,其中包含符合条件的字段的列名(包含tid值1的列)
这里第一个表给出了我要处理的sql表。下面的一个给出了我期望的结果

c9qzyr3d

c9qzyr3d1#

您尝试创建的另外两个列没有任何尚未存在或无法计算的新信息。这两列可以看作是一个函数的结果,函数接受了原来的5列,并给出了一些结果。你可以看看虚拟列。你的用例应该用它来解决。
更具体地说,如果你正在使用postgres,请参阅这个和这个。
这是mysql的。

nx7onnlm

nx7onnlm2#

您可以使用 cross apply 和过滤器:

select t.*, v.*
from t outer apply
     (values ('field1', field1), ('field2', field2), ('field3', field3), ('none', 0)
     ) v(matchedfield, counter)
where (matchedfield = 'none' and field1 + field2 + field3 = 0) or
      (matchedfield <> 'none' and field1 + field2 + field3 > 0) ;

相关问题