выровнять несколько строк в 1 ряд, используя снежинку sql - PullRequest
0 голосов
/ 27 марта 2020

У меня есть такая таблица:

id  col1 col2 col3 col4
1   Y    N    N    N  
1   N    N    Y    N
1   N    Y    N    N
1   N    N    N    N

я хочу, чтобы она выглядела так:

id col1 col2 col3 col4
1  Y    Y    Y    N

как я могу это сделать

Ответы [ 2 ]

2 голосов
/ 27 марта 2020

Вы можете использовать MAX():

select id, max(col1), max(col2), max(col3), max(col4)
from t
group by id;
0 голосов
/ 27 марта 2020

Если желаемое значение не является естественно высоким (и, таким образом, вы можете использовать MAX) или не очень низким (и, следовательно, используете MIN), тогда вы можете, и вы ищете одно состояние, которое вы можете закодировать в

IFF(SUM(IFF(value = <target>,1,0)>0,<target>,<non-target>)

, что на самом деле должно быть сделано с помощью BOOLOR_AGG (который содержит точный пример, который вы опубликовали).

select id, boolor_agg(col1), boolor_agg(col2), boolor_agg(col3), maxboolor_agg(col4)
from t
group by id;

В противном случае, если вы действительно как-то более сложная агрегация значений за пределами предполагается, что logical or кажется, что вы хотите, вам нужно будет объяснить больше.

...