This is my source data.
a |b |c |d |
---+---+---+---+
YES|YES|NO |YES|
NO |YES|NO |NO |
NO |NO |YES|YES|
YES|YES|YES|NO |
My expected output is
a |b |c |d |output |
---+---+---+---+--------+
YES|YES|NO |YES|C |
NO |YES|NO |NO |A |C |D |
NO |NO |YES|YES|A |B |
YES|YES|YES|NO |D |
The additional column output , will display column value based on ‘NO’. At Row-no 1 , the value ‘No’ from C , At row-no 2 No from A C, and D.
to get above result, i written below query
select
A,B,C,D
,concat_ws('|',nullif(A,'YES'),nullif(B,'YES'),nullif(C,'YES'),nullif(D,'YES')) as output
from
test.tab
But it is printing ‘NO’ value. But how to bring which column is having ‘NO’ value.
2
Answers
You could use
CASE
expressions instead ofNULLIF
:You can try below as well in postresql, though it’s not an ansi-sql.