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

Popular posts from this blog

javascript - Enclosure Memory Copies -

php - Replacing tags in braces, even nested tags, with regex -