Postgres在If中设置选择值

时间:2013-10-01 15:42:40

标签: sql postgresql

我想在select语句中设置列的值,但仅限于某个条件。

如下所示:

SELECT 
IF (MIN(mode) <> MAX(mode))
THEN
    "Start Mode" = 'Multiple' 
ELSE
    "Method" = MIN(mode)
ENDIF
FROM sessions
--Where condition here

上述声明会产生错误。可以在这样的选择中使用IF语句吗?

修改

我想确定启动模式是什么。它可以是WEB或CALL。可以有多种启动模式。在这种情况下(MIN不等于MAX),那么我想将开始模式列设置为多个。

我可以使用“mode”作为列名,这个select将在一个更大的sql脚本中生成一个大表,我们将导出到.csv。我们希望使用csv的人清楚列名称。

样品:

Userid Mode 
1     WEB
1     CALL
2     WEB
2     WEB

csv
User Id   Start Mode
1         Multiple
2         WEB

1 个答案:

答案 0 :(得分:0)

SELECT 
User_id, 
CASE WHEN (MIN(mode) <> MAX(mode))
THEN
    'Multiple' 
ELSE
    MIN(mode)
END
as "Start Mode"
FROM sessions
--Where condition here
GROUP BY user_id