Структура SQL-запроса - переменные - PullRequest
0 голосов
/ 11 мая 2018

У меня есть запрос, где я хочу включить новую переменную. Мне нужен запрос, чтобы проверить, возвращает ли эта переменная значение NULL, и если это так, исключить запись из набора результатов.

Переменная, которую мне нужно включить, - @PaymentStatusID_DV, но я не знаю, где ее разместить, где это имело бы смысл. Чтобы назначить это так:

SELECT @PaymentStatusID_DV = dbo.fnGetSimpleDvByThirdPartyField(c.ClientID,c.CustomerID,l.LeadID,ca.CaseID,m.MatterID,1490,4370) 

Так, где я могу поместить это в этот запрос и затем проверить на NULL? (НЕ НУЛЬ)

DECLARE @SettlementDate DATE, 
        @PaymentStatusID_DV VARCHAR(2000),
        @ClientID = 384

SELECT @SettlementDate=dbo.fnAddWorkingDays ( dbo.fnGetNextWorkingDate (CONVERT(DATE,GETDATE()),0) ,cdv.ValueInt + 1 ) 
FROM ClientDetailValues cdv WITH (NOLOCK) WHERE cdv.DetailFieldID=170226 AND cdv.ClientID=@ClientID

SELECT
c.CustomerID,ca.CaseID,ca.LatestInProcessLeadEventID [LeadEventID],m.MatterID, COUNT(m.MatterID)
FROM Customers c WITH (NOLOCK) 
INNER JOIN Lead l WITH (NOLOCK) ON c.CustomerID=l.CustomerID
INNER JOIN Cases ca WITH (NOLOCK) ON l.LeadID=ca.LeadID
INNER JOIN Matter m WITH (NOLOCK) ON ca.CaseID=m.CaseID
LEFT JOIN MatterDetailValues suspended WITH (NOLOCK) ON m.MatterID=suspended.MatterID AND suspended.DetailFieldID=175275
INNER JOIN LeadTypeRelationship ltr WITH (NOLOCK) ON ltr.ToMatterID=m.MatterID AND ltr.FromLeadTypeID=1492 AND ltr.ToLeadTypeID=1493
INNER JOIN Matter pam WITH (NOLOCK) ON ltr.FromMatterID=pam.MatterID
INNER JOIN CustomerPaymentSchedule cps WITH (NOLOCK) ON cps.CustomerID = c.CustomerID AND cps.WhenCreated > '2017-09-01'
INNER JOIN Account a WITH (NOLOCK) ON a.AccountID = cps.AccountID
WHERE  c.Test=0 AND c.ClientID=@ClientID
AND NOT EXISTS ( SELECT * FROM LeadEvent le WITH (NOLOCK) WHERE le.CaseID=ca.CaseID AND le.EventDeleted=0 AND le.EventTypeID=155198 ) -- and collections are not on hold
AND (suspended.ValueInt <> 5144 OR suspended.ValueInt IS NULL) -- and policy status is live
AND cps.CustomerLedgerID IS NULL -- and payment schedule entry has not already been queued in the GL
AND cps.ActualCollectionDate <= @SettlementDate -- and payment date is before or the same as settlement day
AND cps.PaymentGross < 0 -- exclude zero value payments
AND a.AccountTypeID=1 -- and this is a DD payment
GROUP BY c.CustomerID,ca.CaseID,ca.LatestInProcessLeadEventID,m.MatterID

1 Ответ

0 голосов
/ 11 мая 2018

Вам действительно нужно использовать переменную? Лучше всего включить эту функцию в оператор WHERE:

WHERE ... AND dbo.fnGetSimpleDvByThirdPartyField(c.ClientID,c.CustomerID,l.LeadID,ca.CaseID,m.MatterID,1490,4370) IS NOT NULL
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...