2012-08-06 148 views
2

我有一个SQL查询,这是生成表SQL查询case语句

SELECT DISTINCT 
concat(table.column, '.test.com) "User Login", 
concat(concat(table.columnname, ' '), lastname) "Full Name", 
'N' "Admin (Y/N)", 
table.profile "Profile", 
'Self' "admin", 
'Self' "user", 
FROM table.users 

我想一个case语句添加到上述查询。

If (table.profile == admin){ 
admin = self; 
user = null; 
} 
else{ 
admin = null; 
user = self; 
} 

任何人都可以帮忙吗?

+1

**什么**数据库系统,以及哪个版本?? * SQL *只是*结构化查询语言* - 许多数据库系统使用的语言,但不是数据库产品......它真的有助于了解您正在使用的数据库系统**。 – 2012-08-06 19:41:18

+0

哪个数据库是? – 2012-08-06 19:41:23

+0

我正在使用Oracle 11.2 – marcwho 2012-08-06 19:42:14

回答

4
select ... 
,  case when profile = 'admin' then 'self' end as admin 
,  case when coalesce(profile,'') <> 'admin' then 'self' end as user 
from table.users 

case的默认值为空,它符合您的要求。

+0

在查询结束时,case表达式在哪里? – marcwho 2012-08-06 19:48:28

+1

您可以使用'case'在那里您通常会选择一个列,编辑回答 – Andomar 2012-08-06 19:49:39

+0

谢谢!那样做了。快速提问回答中'<>'是什么? – marcwho 2012-08-07 00:23:36