2013-11-08 4 views
0

Я пытаюсь вытащить определенный элемент, если первый элемент не равен нулю.Выберите определенный элемент, если в SQL Server нет значения null

SELECT 
    FM.FileNumber 
    ,FM.ClientsFileNumber AS 'Clients File Number' 
    ,FM.FileID AS FileID 
    ,S.Name AS Status 
    ,FA.ReceivedDate AS 'Contract Fr Seller' --550, 238 
    ,FA1.ReceivedDate AS 'Deed To Seller' --266, 561 
    ,FA2.ReceivedDate AS 'Deed Fr Seller' --40, 629 
    ,FA3.ReceivedDate AS 'HUDTo Seller'      --269, 587 
    ,FA4.ReceivedDate AS 'HUDFr Seller'      --274, 637 
    ,FA5.ReceivedDate AS 'Sent HUD to Buyer'   --268 
    ,FA6.ReceivedDate AS 'Receive Buyer Signed Docs'   --273 
    ,FA7.ReceivedDate AS 'Receive Buyer Funds'      --119 
    ,FA8.ReceivedDate AS 'Closing Completed'       --272 
    ,FA9.ReceivedDate AS 'FC Deed' --344 
    -- ,n.Body as Notes 
FROM 
    FileMain FM 
LEFT OUTER JOIN  
    FileActions FA ON FA.FileID = FM.FileID AND FA.ActionDefID IN (238,550) 
        AND FA.Live = 1 AND FA.ReceiveCoordinatorTypeID = 2 
        --AND FA.ReceivedDate > '2013-03-01' 
        AND FA.ReceivedDate IS NOT NULL 
        AND FA.ActionDefID IS NOT NULL 

В основном я пытаюсь получить его, чтобы выбрать FA.ActioNDefID = 230 если это не NULL, то я хочу, чтобы тянуть FA.ActionDefID = 550, и то же самое для других множественного выбора.

Ниже приведено то, что я в настоящее время получаю, теперь он будет ВСЕГДА быть 238, если он не равен нулю, в основном я хочу получить только 1 из этих номеров файлов, если 238 равно null, а затем вытащить 550.

enter image description here

+0

Можете ли вы представить структуру таблицы, некоторые образцы данных, и что вы пытаетесь достичь? Я не мог понять из этого вопроса. – Mureinik

+0

К сожалению, я не могу предоставить структуру таблицы, но я изменил сообщение с данными. –

+0

@CJBoat. Что вы подразумеваете под «if 238 is null», вы имеете в виду, что нет записей для 238 или некоторые значения столбца для 238 равно NULL? – EricZ

ответ

2

Я хотел бы предложить переписывают вы запрашиваете, как это, должно быть более читаемым

SELECT 
    ... 
    , [Contract Fr Seller] = (SELECT TOP 1 FA.ReceivedDate 
        FROM FileActions FA 
        WHERE FA.FileID = FM.FileID 
          AND FA.ActionDefID IN (238,550) 
          AND FA.Live = 1 
          AND FA.ReceiveCoordinatorTypeID = 2 
        ORDER BY FA.ActionDefID -- This will make sure 238 on the top if exist 
        )         
FROM FileMain FM 
... 
+0

Я думаю, что вы только что сохранили мою работу, большое спасибо, что сработало! Мне нужно было заказать DESC для получения последнего экземпляра, но я этого не объяснил. Спасибо огромное! –

Смежные вопросы