Присоединение к другой таблице для удаления строк без определенных записей - PullRequest
1 голос
/ 03 февраля 2012

Итак, у меня есть запрос, чтобы отфильтровать кучу записей:

declare @rDate_datepart datetime
-- this gets rid of any time information, so we have just the date (i.e, right at midnight of that day)
set @rDate_datepart = convert(datetime,convert(varchar(2),datepart("m",'2/3/2012'))+'/'+convert(varchar(2),datepart("dd",'2/3/2012'))+'/'+convert(varchar(4),datepart("yyyy",'2/3/2012')))

select tq_tran_quote_id, MAX_MATURITY_DT.cm_maturity_dt
from cfo_tran_quote inner join cfo_transaction
    on tq_tr_transaction_id = tr_transaction_id
left join com_lock on tr_transaction_id = lk_tr_transaction_id
LEFT OUTER JOIN 
(
    SELECT cm_tq_tran_quote_id, MAX(cm_maturity_dt) as 'cm_maturity_dt'
    FROM cfo_component
    GROUP BY cm_tq_tran_quote_id
) AS MAX_MATURITY_DT ON MAX_MATURITY_DT.cm_tq_tran_quote_id = tq_tran_quote_id
where tq_dd_tran_qt_status = 'Matured' and
    isnull(lk_rv_lock_status, 10104) = 10104 and
MAX_MATURITY_DT.cm_maturity_dt between @rDate_datepart - 15 and @rDate_datepart 
and tq_dd_product in 
        (select pr_dd_product 
        from cfo_product 
        where pr_dd_product_type = 'Cash Flow') 

Теперь я хочу добавить к этому запросу что-то, что говорит: «Дайте мне все строки, возвращенные этим запросом, где эти конкретные tq_tran_quote_id не имеют записей в другой таблице cfo_daily_trans_hist, где их dh_valuation_total эта другая таблица 0.

Имеет ли это смысл?

Я ужасен с SQL ... LOL

Ответы [ 2 ]

2 голосов
/ 03 февраля 2012

Все, что вам нужно сделать, это взять весь ваш запрос и добавить:

WHERE tq_tran_quote_id NOT IN (SELECT tq_tran_quote_id FROM MyOtherTable WHERE dh_valuation_total=0)

В основном это отвечает на ваш вопрос:

Теперь я хочу добавить к этому запросу что-то вроде: все строки этого запроса вернули туда, где эти конкретные У tq_tran_quote_id нет записей в другой таблице cfo_daily_trans_hist где их dh_valuation_total в этом другом таблица 0.

Он просто говорит, ГДЕ этого tq_tran_quote_id нет в "другой таблице", которую вы захотите заменить MyOtherTable реальным именем вашей таблицы, где их dh_valuation_total равно 0.

0 голосов
/ 03 февраля 2012
select *
from (your query)
where tq_tran_quote_id NOT IN (SELECT tq_tran_quote_id FROM MyOtherTable WHERE dh_valuation_total=0)

удачи

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