如何在postgres中连接非零列名?

时间:2019-07-05 00:08:44

标签: postgresql

我的表“ tbl”具有整数列A,B,C。

对于每一行,我只想打印以单个字符串连接的非零列。

我可以这样做:

SELECT CONCAT(CASE A>0 "A" ELSE "" END, 
              CASE B>0 "B" ELSE "" END,
              CASE C>0 "C" ELSE "" END)
FROM tbl

我想做这样的事情:

SELECT CONCAT(INCIDATE(A), INDICATE(B), INDICATE(C)) 
FROM tbl

其中INDICATE是我将定义的函数,该函数接收列名col并实现

    INDICATE(col) := CASE col>0 col.name ELSE "" END

如何在postgres中做到这一点?

1 个答案:

答案 0 :(得分:0)

您可以尝试以下示例:

SELECT concat (a,b,c)
from 

(
select case  when A >0 then 'A' else '' end as A,
   case  when B >0 then 'B' else '' end as B,
   case  when C >0 then 'C' else '' end as C
FROM  (VALUES (2,2,2 ), (1,2,3 ),(0,0,1 )) AS t (A, B,C) -- values is tbl
) as data