У меня есть следующая таблица.
| col1 | col2 | col3 | col4 |
| ---- | ---- | ---- | ---- |
| 123 | 345 | LA | 001 |
| 123 | 345 | AB | |
| 123 | 345 | LA | |
| 123 | 345 | | |
| abc | cde | LA | |
| abc | cde | | |
| abc | cde | AB | |
| abc | cde | LA | |
| ooo | zzz | LA | |
| ooo | zzz | LA | 001 |
| ooo | zzz | LA | |
| ooo | zzz | LA | 001 |
| 12 | 35 | LA | |
| 12 | 35 | LA | |
| 12 | 35 | LA | |
| 12 | 35 | LA | |
Я хотел бы выбрать для каждой группы col1
& col2
, col3
должно быть AB
, если оно присутствует в группеиначе blank
и col4
должны быть non-blank
, если присутствует значение non-blank
, иначе оно должно быть blank
.col4
для каждой группы будет иметь либо значение unique non-blank
, либо blank
.
Желаемый вывод:
| col1 | col2 | col3 | col4 |
|------|------|------|------|
| 123 | 345 | AB | 001 |
| abc | cde | AB | |
| ooo | zzz | | 001 |
| 12 | 35 | | |
Желаемый код:
select col1, col2,
(AB if AB present else blank) as col3,
(non-blank value if non-blank is present else blank) as col4
from test
group by col1, col2;
То, что я пробовал до сих пор:
select col1, col2,
max(col4) as col4
from test
group by col1, col2;
Я не знаю, как это сделать для col3
SQL Fiddle: https://www.db -fiddle.com/f/dtEiDdu6Arn6VQTGwMXm4q/0
ПРИМЕЧАНИЕ:
Мне требуется решение, не зависящее от поставщика.Я думаю решение для конкретной СУБД может работать на платформе, которую я использую, но мне придется проверить этот ответ / решение и, тем не менее, вернуться к вам.
Я не запрашиваю из источника, а из сетки, поэтому я не использую СУБД в бэкэнде.