I got a child table data as follows:
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
and parent table as follows:
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
Now, I'm trying to get only Inactivated_On Child Id's(16, 12, 13, 7) rows top 1 based on Updated_on DESC as there are repetitive Id's. The result should also need to check
My final expected result should be:
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
The query that I have tried is:
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
I'm looking for a query to get Case 1 and 2 working. Any help is much appreciated.
remove ct.id from partition by and put ct.cust_id in partition with item_order
SELECT CH.Id,
CH.Cust_id,
CH.Item_Id,
CH.Inactivated_On,
CH.Updated_on,
CH.Ans
(SELECT ROW_NUMBER() OVER (PARTITION BY CT.Item_Id, CT.cust_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
AND CT.Cust_id = 123
AND CT.Item_Id = 541
) AS CHLD
WHERE CH.RN = 1
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.