I'm Using Amazon Redshift. I need to get the MAX Date in the column by Month wise. The Example is as below.
There are 5 tables:
vendor
vendor_pkg
vendor_pkg_category
vendor_load
vendor_load_status
vendor V
vendor_id vendor_name
-----------------------
1 L&T
2 Reuters
3 IBM
4 INfosys
vendor_pkg VP
vendor_pkg_id vendor_pkg_category_id vendor_pkg_name vendor_id
------------------------------------------------------------------
1 1 Futures 1
2 1 Fairvalue 1
3 3 Equities 1
4 2 MBS 1
5 2 INTL Price 2
6 4 Muni 2
vendor_pkg_category VPC
vendor_pkg_category_id category_name
-------------------------------------
1 Price
2 Security
3 Rating
4 value
Vendor_load VL
vendor_load_id eval_date load_status_id vendor_pkg_id
---------------------------------------------------------
1 2014-06-05 1 1
2 2014-06-20 1 1
3 2014-07-05 2 2
4 2014-07-20 1 2
5 2014-06-05 2 3
6 2014-06-20 2 3
7 2014-07-05 1 4
8 2014-07-20 2 4
vendor_load_status VLS
load_status_id load_status_name
--------------------------------
1 Success
2 Failed
Result table should be like this:
v.vendor vpc.category_name vp.ven_pkg_name vl.eval_date vls.status_name
---------------------------------------------------------------------------
L&T Price futures 2014-06-20 Success
L&T Price fairvalue 2014-07-20 Success
L&T Security MBS 2014-07-20 Failed
L&T Rating Equities 2014-06-20 Failed
I use the following query. But it displays the data for one month only:
SELECT DISTINCT v.vendor_name AS vendor,
vpc.category_name AS V_Type,
vp.vendor_pkg_name AS Package_name,
vl.eval_date AS C_Date,
vls.load_status_name AS Status
FROM ces_idw.vendor v,
ces_idw.vendor_pkg_category vpc,
ces_idw.vendor_load vl,
ces_idw.vendor_pkg vp,
ces_idw.vendor_load_status vls
WHERE (vl.eval_date) IN (SELECT DISTINCT MAX(vl.eval_date)
FROM ces_idw.vendor_load vl
WHERE v.vendor_id = vp.vendor_id
and v.vendor_name = 'IDC'
AND vp.vendor_pkg_id = vl.vendor_pkg_id
AND TO_CHAR(vl.eval_date,'yyyy-mm') = '2014-06'
GROUP BY vl.vendor_pkg_id,
v.vendor_name)
AND vp.vendor_pkg_category_id = vpc.vendor_pkg_category_id
AND vp.vendor_pkg_id = vl.vendor_pkg_id
AND vl.load_status_id = vls.load_status_id
ORDER BY vp.vendor_pkg_name
when I use TO_CHAR(vl.eval_date,'yyyy-mm')between '2014-06' and '2014-07'
it shows the result for '2014-07'
.