Я получил данные дочерней таблицы следующим образом:
Id Cust_id Item_Id Inactivated_On Updated_on Ans
-----------------------------------------------------------------------
15 123 541 2014-05-18 08:44:00 2014-05-18 08:44:00 true
16 123 541 2014-05-18 08:44:00 2014-05-18 08:44:00 123
11 123 541 NULL 2014-05-18 08:44:00 NULL
12 123 541 2014-05-18 08:44:00 2014-05-18 08:44:00 NULL
13 123 541 2014-05-18 08:44:00 2014-05-18 08:44:00 false
6 123 541 NULL 2014-05-18 08:44:00 NULL
7 123 541 NULL 2014-05-18 08:44:00 NULL
15 123 541 NULL 2014-05-18 08:44:00 false
и родительская таблица следующим образом:
Id Parent_Id Type_Id
-------------------------
15 NULL 1
16 15 2
11 NULL 2
12 11 2
13 11 1
6 NULL 2
7 6 2
Теперь я пытаюсь получить только строки Inactivation_On Child Id (16, 12, 13, 7), первые 1 на основе Upd_on DESC, так как есть повторяющиеся идентификаторы. Результат также нужно проверить
- Случай 1: если Type_Id родительского идентификатора = 2, то Inactivation_On равно NULL и
- Случай 2: когда Type_Id родительского идентификатора = 1, тогда значение Inactivation_On равно NULL, и данные данные не должны иметь родительское значение Ans как 'false'
- Случай 3: когда дочерняя и родительская строки Inactivation_On имеют значение NULL, исключаются из окончательного набора результатов
Мой окончательный ожидаемый результат должен быть:
Id Cust_id Item_Id Inactivated_On Updated_on Ans
-------------------------------------------------------------------
12 123 541 2014-05-18 08:44:00 2014-05-18 08:44:00 NULL
13 123 541 2014-05-18 08:44:00 2014-05-18 08:44:00 false
запрос, который я пробовал:
SELECT
CH.Id,
CH.Cust_id,
CH.Item_Id,
CH.Inactivated_On,
CH.Updated_on,
CH.Ans,
CH.RN
(SELECT
ROW_NUMBER() OVER (PARTITION BY CT.Item_Id, CT.Id ORDER BY CT.Updated_on DESC) AS RN,
CT.Id,
CT.Cust_id,
CT.Item_Id,
CT.Inactivated_On,
CT.Updated_on,
CT.Ans
FROM
CHILD_TBL AS CT
INNER JOIN
PARENT_TBL AS PT ON PT.Id = CT.Id
WHERE
PT.Parent_Id IS NULL
CT.Inactivated_On IS NOT NULL -- FOR CASE 3 FILTERING
AND CT.Cust_id = 123
AND CT.Item_Id = 541) AS CH
WHERE
CH.RN = 1
Я ищу запрос, чтобы заставить работать дела 1 и 2. Любая помощь очень ценится.