我的表“ 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中做到这一点?
答案 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