Использование данных строки для выбора данных столбца из отдельной таблицы - PullRequest
0 голосов
/ 18 июня 2020

У меня есть данные, которые мне нужно согласовать из двух разных запросов. Эти данные поступают от человека, который выбирает даты и платежи для отсрочки ссуды. Эта информация помещается в строку в таблице, относящуюся к запросу 1. Платежи не хранятся в строке в запросе 1. Платежи хранятся в таблице в запросе 2. Единственным фрагментом данных, который связывает два источника данных, является Дата. Мне нужно каким-то образом превратить запрос 1 в таблицу из строки, а затем связать его с таблицей запроса 2. В этом примере клиент хотел отложить платежи на 29 февраля и 29 марта, но НЕ на платеж 29 апреля.

Запрос 1

SELECT   TOP(1)     task_detail.task_refno
, task_detail.userdef10
, task_detail.userdef11
, task_detail.userdef12
, task_detail.userdef13
, task_detail.userdef37
, task_detail.userdef38
, task_detail.userdef39
, task_detail.userdef40
FROM            task INNER JOIN
task_detail ON task.task_refno = task_detail.task_refno
WHERE        (task.NLS_refno = 53475)
ORDER BY task.task_refno DESC

Результаты запроса 1

task_refno  userdef10   userdef11   userdef12   userdef13   userdef37   userdef38   userdef39   userdef40
252152      02/29/2020  03/30/2020   04/30/2020  NULL          1           1           0           0 

Запрос 2

SELECT TOP (6) lpd.row_id, lpd.date_due, lpd.payment_remaining
FROM                          loanacct_payments_due AS lpd INNER JOIN
                         loanacct AS la ON lpd.acctrefno = la.acctrefno
WHERE (lpd.date_due <= DATEADD(m, 3, CONVERT(date, GETDATE()))) 
AND (lpd.payment_type = 'PB' OR
     lpd.payment_type = 'PI' OR
     lpd.payment_type = 'P' OR
     lpd.payment_type = 'I') 
AND la.acctrefno = 53475

Результаты запроса 2

row_id  date_due                 payment_remaining
6924954 2020-02-29 00:00:00.000 388.97
6970925 2020-03-30 00:00:00.000 398.97
7015051 2020-04-30 00:00:00.000 408.97

Обратите внимание, что в результатах запроса 1 userdef10, userdef11, userdef12, userdef13 относятся к date_due в результатах запроса 2. Значения для userdef37, userdef38, userdef39, userdef40 - это флажки, которые отмечены или нет. 1 проверяется, а 0 не проверяется.

В моем конечном результате мне нужно получить row_id и payment_remaining из результатов запроса 2, где соответствующие userdef37, 38, 39 и 40 равны 1.

В этом примере мне нужен row_id payment_remaining 6924954 388.97

, потому что userdef37, userdef38 оба были 1.

Я думаю, что конечный результат для результатов запроса 1 - попытаться поместить его в таблицу, которая может быть объединена с результатами запроса 2, подобными этому .

task_refno      due_date        selected
252152         02/29/2020       1
252152         03/29/2020       1
252152         04/29/2020       0
252152         NULL             0

И попробуйте присоединиться к due_date.

Мне никогда не приходилось брать строковые данные и превращать их в табличные данные.

...