declare @bid varchar(4) = '1007'
select sr.release_date,
sr.customer_id,
sr.customer_name,
sr.item_id,
sr.item_desc,
sr.order_no,
sr.qty_on_hand,
sr.release_qty,
sr.qty_after_released,
sr.extended_sell,
sr.enough,
sr.route_description
from sri_schedule_releases_view as sr
where
((case
when sr.route_code in ('pm 01','pm 03','pm 05') then (select users.contact_id from users where users.delete_flag = 'n' and users.name = 'John')
end = @bid) or
(case
when sr.route_code in ('pm 01','pm 03','pm 05') then (select users.contact_id from users where users.delete_flag = 'n' and users.name = 'Jane')
end = @bid) or
(case
when sr.route_code in ('pm 01','pm 03','pm 05') then (select users.contact_id from users where users.delete_flag = 'n' and users.name = 'Doe')
end = @bid) or
(sr.contact_id = @bid))
order by sr.item_id asc
Esta consulta funciona bem. Mas quero exibir sr.route_description
apenas quem tem o sr.route_code
PM 01 , PM 03 e PM 05 .
Existem possibilidades de fazer isso?
Você só precisa adicionar uma
case
declaração à suaselect
lista:Eu encontrei uma solução e funciona como eu esperava
Se você quiser mostrar apenas a coluna se os dados estiverem presentes, talvez crie uma função com duas possibilidades dentro de instruções IF:
SE os dados estiverem presentes (Execute a consulta normal) ELSE
(copie a mesma consulta, mas sem a coluna vazia)
Muito código - basta criar uma tabela temporária com todo o conjunto de resultados.