Hi everyone
I am working on a query where the calculation depends on whether the entry is the 2nd entry from the top or 2nd entry from the bottom. How can I find these two values?
Sample data
DROP TABLE IF EXISTS #TEST_TABLE
CREATE TABLE #TEST_TABLE
(
[UNIT] [nchar](1) NOT NULL,
[ORDER_DATE] [date] NOT NULL
)
INSERT INTO #TEST_TABLE
VALUES('A','2025-02-03'),
('A','2025-01-31'),
('A','2025-01-30'),
('A','2025-01-29'),
('A','2025-01-28'),
('A','2025-01-27'),
('A','2025-01-24'),
('B','2025-01-20'),
('B','2025-01-17'),
('B','2025-01-16'),
('B','2025-01-15'),
('B','2025-01-14'),
('B','2025-01-09')
SELECT*
FROM#TEST_TABLE
ORDER BY 1,2 DESC
Expected outcome
Unit Date1 Date2
A 2025-01-31 2025-01-27
B 2025-01-17 2025-01-14
Thank you
WITH ordered
AS (SELECT UNIT
,ORDER_DATE
,rn1 = ROW_NUMBER () OVER (PARTITION BY UNIT ORDER BY ORDER_DATE)
,rn2 = ROW_NUMBER () OVER (PARTITION BY UNIT ORDER BY ORDER_DATE DESC)
FROM #TEST_TABLE)
SELECT o.UNIT
,Date1 = MAX (IIF(o.rn2 = 2, o.ORDER_DATE, '19000101'))
,Date2 = MAX (IIF(o.rn1 = 2, o.ORDER_DATE, '19000101'))
FROM ordered o
WHERE o.rn1 = 2
OR o.rn2 = 2
GROUP BY o.UNIT;
February 9, 2025 at 12:51 pm
WITH MyCTE AS (
SELECT Unit, ORDER_DATE, row_number() over (partition by unit order by ORDER_DATE desc) as RowNum
FROM #TEST_TABLE)
SELECT Unit, Order_date
FROM MyCTE
WHERE RowNum = 2;
February 9, 2025 at 12:53 pm
WITH MyCTE AS (
SELECT Unit, ORDER_DATE, row_number() over (partition by unit order by ORDER_DATE desc) as RowNum
FROM #TEST_TABLE)
SELECT Unit, Order_date
FROM MyCTE
WHERE RowNum = 2;
February 9, 2025 at 10:14 pm
WITH ordered
AS (SELECT UNIT
,ORDER_DATE
,rn1 = ROW_NUMBER () OVER (PARTITION BY UNIT ORDER BY ORDER_DATE)
,rn2 = ROW_NUMBER () OVER (PARTITION BY UNIT ORDER BY ORDER_DATE DESC)
FROM #TEST_TABLE)
SELECT o.UNIT
,Date1 = MAX (IIF(o.rn2 = 2, o.ORDER_DATE, '19000101'))
,Date2 = MAX (IIF(o.rn1 = 2, o.ORDER_DATE, '19000101'))
FROM ordered o
WHERE o.rn1 = 2
OR o.rn2 = 2
GROUP BY o.UNIT;
Thank you so much!
Viewing 6 posts - 1 through 5 (of 5 total)
You must be logged in to reply to this topic. Login to reply