Я пытался напечатать имена столбцов в зависимости от состояния и значения. Моя проблема в этом Если два всех столбца в двух строках, например, для данных x и y, имеют значение yes, он должен печатать эти имена столбцов, иначе не

Мой код:

select 'A' from world.city where A = 'yes' AND data=y and data=x union all
select 'B' from world.city where B= 'yes' AND data=y and data=x  union all
select 'C' from world.city where C= 'yes' AND data=y and data=x  union all
select 'D' from world.city where D= 'yes' AND data=y and data=x  union all
select 'E' from world.city where E= 'yes' AND data=y and data=x;

Это не дает идеальных результатов.

-2
S. Farooq 17 Апр 2018 в 17:05

1 ответ

Лучший ответ

Сделайте сумму и объедините все, затем отфильтруйте строки с суммой («да»), равной 2. См. Ниже.

select colname 
from (
select 'A' as colname,sum(case when A='yes' then 1 else 0 end) col
from tbl where data in ('X','Y')
union all
select 'B',sum(case when B='yes' then 1 else 0 end)  
from tbl where data in ('X','Y')
union all
select 'C',sum(case when C='yes' then 1 else 0 end)  
from tbl where data in ('X','Y')
union all
select 'D',sum(case when D='yes' then 1 else 0 end)  
from tbl where data in ('X','Y')
union all
select 'E',sum(case when E='yes' then 1 else 0 end)  
from tbl where data in ('X','Y')) tab
where col = 2;

Result:
colname
B
D
1
âńōŋŷXmoůŜ 17 Апр 2018 в 14:20