使用CASE语句测试表1中的值,设置表2中的值

时间:2014-04-04 23:58:57

标签: sql postgresql case

我是SQL的新手,所以如果你能够回答正确的语法(对于PostgreSQL),这将是很棒的。

我有两张桌子

表1“geo_temp”,列[geo_type1] [geo_type2] .... [geo_type6] [geo_typeR];

表2“geo_summary”,列[geo]。

这是我想做的事,

CASE
WHEN (geo_type1 NOTNULL) THEN (geo = geo_type1)
WHEN (geo_type2 NOTNULL) THEN (geo = geo_type2)
...
ELSE (geo = geo_typeR)

非常感谢您的帮助。感谢。

2 个答案:

答案 0 :(得分:3)

使用coalesce()功能:

geo = coalesce(geo1, geo2, ...,geoR)

coalesce()返回列表中找到的第一个非空值,这就是您的意图。

作为更新声明:

update geo_summary set
geo = (select coalesce(geo1, geo2, ...,geoR)
  from geo_temp
  where geo_temp.id = geo_summary.id)

答案 1 :(得分:0)

我假设您要在WHEREON条款中使用此功能。

你可以做点像......

geo =
CASE
WHEN (geo_type1 is NOT NULL) THEN geo_type1
WHEN (geo_type2 is NOT NULL) THEN geo_type2
...
ELSE geo_typeR
END