sql - What is wrong with this query? I am not getting correct results -
what wrong query, please let me know. inner query want select top 1 group on basis of eventid.
please suggest do.
select top 1 * ( select e.eventid, etd.eventname, ed.eventdate [3rdi_eventdates] ed inner join [3rdi_events] e on ed.eventid=e.eventid inner join [3rdi_eventtypedetails] etd on e.eventtypeid=etd.eventtypeid e.eventid in ( select eventid [3rdi_events] eventid in (select distinct eventid [3rdi_eventdates] eventdate between '2/9/2011' , '3/11/2012') ) order etd.eventname, ed.eventdate ) temp group eventid
you want 1 record per eventid, in case, use row_number() , partitioning.
your 2 levels of subquery not needed, inner joins involve both tables in subqueries can filter directly in main query.
the last point make date literals best written using yyyymmdd robust against regional or dateformat settings.
select eventid, eventname, eventdate ( select e.eventid, etd.eventname, ed.eventdate, row_number() on ( partition e.eventid order etd.eventname, ed.eventdate) rownum [3rdi_eventdates] ed inner join [3rdi_events] e on ed.eventid=e.eventid inner join [3rdi_eventtypedetails] etd on e.eventtypeid=etd.eventtypeid ed.eventdate between '20110209' , '20120311' ) temp rownum = 1
Comments
Post a Comment