2016-08-24 38 views
1

PostgreSQL的功能,我有回到我的表像这样的查询:每一行

id | VAL | Type 
-- | --- | ---- 
1 | 10 | A 
2 | 20 | B 
3 | 30 | C 
4 | 40 | B 

我想呼吁各行的一些功能,这将检查类型,每种类型做一些东西,像C#中的IF:

if(type=='A'){} 
if(type=='B'){} 
if(type=='C'){} 

如何在Postgresql中仅使用sql来创建这两个东西?

回答

1

在标准SQL中,你可以在这里使用一个CASE短语:

SELECT id, val, "type", 
     CASE "type" 
     WHEN 'A' THEN funcA() 
     WHEN 'B' THEN funcB() 
     WHEN 'C' THEN funcC() 
     END AS func_result, 
FROM <table>; 

所有功能应该会返回一个标值(单个值)。