i have table follows:
keycol | date_o_col | date_c_col | statcol -------------------------------------------------------------------- 1 2007-02-09 2012-11-02 c 1 1990-01-31 <null> o 1 <null> <null> o ------------------------------------------------------------------------
i want write query following:
1) compares date values in both date columns find out max date between both of them. in example above 2012-11-02
max date in both columns.
2) since 2012-11-02
in date_c_col
, resultant row of query should be:
keycol | date_o_col | date_c_col | statcol -------------------------------------------------------------------- 1 <null> 2012-11-02 c
i.e. send max date in column in belonged corresponding statcol
, send other date column null.
as other example, table status as:
keycol | date_o_col | date_c_col | statcol -------------------------------------------------------------------- 2 2016-02-09 2016-03-09 c 2 1990-01-31 2012-11-02 c 2 2016-03-10 <null> o ------------------------------------------------------------------------
should result in:
keycol | date_o_col | date_c_col | statcol -------------------------------------------------------------------- 2 2016-03-10 <null> o
since 2016-03-10
max date , belongs date_o_col
corresonding statcol
o.
i using db2 9.
you can use case
:
select t.keycol, (case when max(date_o_col) null , max(date_c_col) null null when max(date_o_col) null 'c' when max(date_c_col) null 'o' when max(date_o_col) > max(date_c_col) 'o' when max(date_c_col) > max(date_o_col) 'c' else '=' end) t group keycol;
i made values boundary cases question doesn't cover: when values both null
or both equal.
Comments
Post a Comment