Есть ли лучший способ создания этого запроса - PullRequest
3 голосов
/ 08 сентября 2011

Я создаю подзапрос кейса, который работает, но я уверен, что должен быть более простой способ сделать это?

Цель запроса - когда billgrp_desc, например, «30%», отобразить billgrp_desc из таблицы tbm.billgrp.

В противном случае отображать материальный код из таблицы hbm.matter, когда billgrp_desc не похож на '30% '

Запрос ниже:

select 
 case
    when bllgrp_desc like '30%' then 'billgrp_desc'
 end
from tbm.billgrp
union 
select 
 case
    when exists (select billgrp_desc
                 from tbm.billgrp
                 where billgrp_desc not like '30%') then 'matter_code'
  end
from hbm.matter

Ответы [ 2 ]

2 голосов
/ 08 сентября 2011

Я бы, наверное, пошел по этому пути:

select 
 case
    when bllgrp_desc like '30%' then 'billgrp_desc'
    else 'matter_code'
 end
from tbm.billgrp

Поскольку вы ничего не выбираете из таблицы matter, я не вижу причин для запроса этого ... Нет также никаких причин длясоюз, который я вижу.Просто выделите все строки, которые вы хотите в первый раз.

1 голос
/ 08 сентября 2011

Попробуйте, я предполагаю, что Matter_code - это поле из таблицы материалов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...