Я написал следующий запрос TSQL и запускаю его в Microsoft Report Builder. Моя проблема - одна часть работает некорректно. Любая информация была бы очень полезной. Благодарю.Вывод SQL-запроса Builder QQL
- Примечание - (SELECT ProcessDate FROM ufnARCUGetLatestProcessDate()) возвращает дату выполнения запроса. Это одна из наших стандартных функций.
Это та часть, с которой у меня возникают проблемы. По какой-то причине он не находит кредиты, у которых есть дата закрытия NULL. Например, учетная запись, на которую я тестирую, имеет открытый кредит, но значение, которое оно возвращает, равно 0, когда я должен получить 1. Кто-нибудь видит, что я могу потерять?
(SELECT COUNT(*) -- Check if there are no open loans
FROM arcu.vwARCULoan AS L
WHERE A.ACCOUNTNUMBER=L.AccountNumber AND
L.ProcessDate = (SELECT ProcessDate FROM ufnARCUGetLatestProcessDate()) AND
L.LoanCloseDate IS NOT NULL)=0 AND -- END Check if there are no open loans
Ниже приводится весь запрос.
SELECT
A.ACCOUNTNUMBER AS 'Account Number'
,A.AccountBranch AS 'Branch Number'
,A.AccountOpenDate AS 'Account Open Date'
,A.AccountActivityDate AS 'Last Activity Date'
,N.NameFirst+' '+N.NameLast AS 'Member Name'
FROM
arcu.vwARCUAccount AS A
LEFT OUTER JOIN arcu.vwARCUName AS N
ON A.ACCOUNTNUMBER = N.AccountNumber
WHERE
A.ProcessDate = (SELECT ProcessDate FROM ufnARCUGetLatestProcessDate()) AND
A.AccountCloseDate IS NULL AND
A.AccountOpenDate>DATEADD(DAY,-30,A.AccountOpenDate) AND
N.NameType=0 AND
N.ProcessDate = (SELECT ProcessDate FROM ufnARCUGetLatestProcessDate()) AND
(SELECT SUM(S.ShareBalance) -- Check if all shares are zero
FROM arcu.vwARCUShare AS S
WHERE A.ACCOUNTNUMBER=S.AccountNumber AND
S.ProcessDate = (SELECT ProcessDate FROM ufnARCUGetLatestProcessDate()) AND
A.ProcessDate = (SELECT ProcessDate FROM ufnARCUGetLatestProcessDate()))=0 AND -- END Check if all shares are zero
(SELECT COUNT(*) -- Check if there are no open loans
FROM arcu.vwARCULoan AS L
WHERE A.ACCOUNTNUMBER=L.AccountNumber AND
L.ProcessDate = (SELECT ProcessDate FROM ufnARCUGetLatestProcessDate()) AND
A.ProcessDate = (SELECT ProcessDate FROM ufnARCUGetLatestProcessDate()) AND
L.LoanCloseDate IS NOT NULL)=0 AND -- END Check if there are no open loans
(SELECT COUNT(*) --Check if tracking records exist
FROM arcu.vwARCULoanTracking AS T
WHERE A.ACCOUNTNUMBER=T.AccountNumber AND
T.ProcessDate = (SELECT ProcessDate FROM ufnARCUGetLatestProcessDate()) AND
A.ProcessDate = (SELECT ProcessDate FROM ufnARCUGetLatestProcessDate()) AND
T.LoanTrackingType IN(@TRACKINGTYPES))=0 AND --END Check if tracking records exist
(SELECT COUNT(*)
FROM arcu.vwARCUInventory AS I
WHERE A.ACCOUNTNUMBER=I.InventoryAccountNumber AND
I.ProcessDate = (SELECT ProcessDate FROM ufnARCUGetLatestProcessDate()) AND
A.ProcessDate = (SELECT ProcessDate FROM ufnARCUGetLatestProcessDate()) AND
I.InventoryStatus=2 AND
I.InventoryType IN (@INVENTORYTYPE))=0
ORDER BY A.ACCOUNTNUMBER
Вы действительно должны помочь нам помочь вам еще. Ваш первый фрагмент в изоляции не понятен и не может быть запущен, а второй фрагмент просто огромен. Сначала сушите проблему, попробуйте создать [sscce] (http://sscce.org). Кроме того, это поможет, если вы сообщите нам, что вы пытались решить, и какие проблемы вы столкнулись. – Jeroen