Hi,I have the table below:[code="sql"]CREATE TABLE [dbo].[ATABLE]( [EVENT_ID] [int] NOT NULL, [EVENT_RANK] [int] NULL, [MIN_AGE] [float] NULL, [MAX_AGE] [float] NULL) ON [PRIMARY]GOINSERT [dbo].[ATABLE] ([EVENT_ID], [EVENT_RANK], [MIN_AGE], [MAX_AGE]) VALUES (1205, 1, NULL, 55.00000000089)GOINSERT [dbo].[ATABLE] ([EVENT_ID], [EVENT_RANK], [MIN_AGE], [MAX_AGE]) VALUES (1205, 2, 23, NULL)GOINSERT [dbo].[ATABLE] ([EVENT_ID], [EVENT_RANK], [MIN_AGE], [MAX_AGE]) VALUES (1205, 3, 15, 22)GOINSERT [dbo].[ATABLE] ([EVENT_ID], [EVENT_RANK], [MIN_AGE], [MAX_AGE]) VALUES (1205, 4, 23, 29)GO[/code]What I would like to do is to return a running maximum and a running minimum but with the added complexity that (sorting by rank ID) if the lower rank min age is higher than the current min age and the lower rank max age is lower than the current max age that the running minimum and maximum ignores these valuesin this case the running min and max at the end would beMinimum 23Maximum 29I am struggling to get a windowing function to help with this and would very much welcome your help.See below my mess:[code="sql"]SELECT EVENT_ID, EVENT_RANK,MIN_AGE,MAX_AGE,MAX(MIN_AGE) OVER (PARTITION BY EVENT_ID ORDER BY EVENT_RANK) AS C_MIN1,MIN(MAX_AGE) OVER (PARTITION BY EVENT_ID ORDER BY EVENT_RANK) AS C_MAX1,CASE WHEN MAX_AGE < MAX(MIN_AGE) OVER (PARTITION BY EVENT_ID ORDER BY EVENT_RANK) OR MAX_AGE > MIN(MAX_AGE) OVER (PARTITION BY EVENT_ID ORDER BY EVENT_RANK) THEN NULL ELSE MAX(MIN_AGE) OVER (PARTITION BY EVENT_ID ORDER BY EVENT_RANK) END AS C_MIN,CASE WHEN MIN_AGE > MIN(MAX_AGE) OVER (PARTITION BY EVENT_ID ORDER BY EVENT_RANK) OR MIN_AGE < MAX(MIN_AGE) OVER (PARTITION BY EVENT_ID ORDER BY EVENT_RANK)THEN NULLELSE MIN(MAX_AGE) OVER (PARTITION BY EVENT_ID ORDER BY EVENT_RANK) END AS C_MAX,CASEWHEN MAX_AGE < MAX(MIN_AGE) OVER (PARTITION BY EVENT_ID ORDER BY EVENT_RANK) THEN 0 WHEN MIN_AGE > MIN(MAX_AGE) OVER (PARTITION BY EVENT_ID ORDER BY EVENT_RANK) THEN 0ELSE 1 END AS VALIDFROM ATABLE[/code]any help would be very gratefully appreciated.ThanksOliver
↧