Please start any new threads on our new site at https://forums.sqlteam.com. We've got lots of great SQL Server experts to answer whatever question you can come up with.

 All Forums
 SQL Server 2005 Forums
 Transact-SQL (2005)
 making max

Author  Topic 

cjhardie
Yak Posting Veteran

58 Posts

Posted - 2007-01-16 : 13:46:59
I have a query with 3 columns and one of the columns needs to be the max enddate. here is the query.
sf. enddate gives back many dates I just want the latest one. Any ideas?

select srv.businessid, sl.leaseenddate, sf.enddate
from siteregionvenue srv
inner join franchiseregionvenue frv on srv.franchiseregionvenueid = frv.franchiseregionvenueid and frv.deletedate is null
inner join business b on frv.businessid = b.businessid
inner join sitelease sl on srv.siteregionvenueid = sl.siteregionvenueid and sl.deletedate is null
inner join displayarea da on srv.siteregionvenueid = da.siteregionvenueid
inner join displayplatform dp on da.displayareaid = dp.displayareaid
inner join slotfill sf on dp.displayplatformid = sf.displayplatformid and sf.deletedate is null
where frv.venueid = 1 and frv.businessid = 1 and sl.leasetype = 1 and sl.leaseenddate > '1/1/2007'


order by srv.businessid, sf.enddate

Vinnie881
Master Smack Fu Yak Hacker

1231 Posts

Posted - 2007-01-16 : 14:09:55
If you just want to bring back the data where the enddate is the max on of the query use the following.

select srv.businessid, sl.leaseenddate, sf.enddate
from siteregionvenue srv
inner join franchiseregionvenue frv on srv.franchiseregionvenueid = frv.franchiseregionvenueid and frv.deletedate is null
inner join business b on frv.businessid = b.businessid
inner join sitelease sl on srv.siteregionvenueid = sl.siteregionvenueid and sl.deletedate is null
inner join displayarea da on srv.siteregionvenueid = da.siteregionvenueid
inner join displayplatform dp on da.displayareaid = dp.displayareaid
inner join slotfill sf on dp.displayplatformid = sf.displayplatformid and sf.deletedate is null
where frv.venueid = 1 and frv.businessid = 1 and sl.leasetype = 1 and sl.leaseenddate > '1/1/2007'
group by srv.businessid, sl.leaseenddate, sf.enddate
having sf.endate = Max(sf.enddate)

If you want the max date to show up for all your records use this

select srv.businessid, sl.leaseenddate, sf.enddate,(Select Max(a.EndDate) from slotfill a where a.displayplatformid = dp.DisplayPlatformID)
from siteregionvenue srv
inner join franchiseregionvenue frv on srv.franchiseregionvenueid = frv.franchiseregionvenueid and frv.deletedate is null
inner join business b on frv.businessid = b.businessid
inner join sitelease sl on srv.siteregionvenueid = sl.siteregionvenueid and sl.deletedate is null
inner join displayarea da on srv.siteregionvenueid = da.siteregionvenueid
inner join displayplatform dp on da.displayareaid = dp.displayareaid
inner join slotfill sf on dp.displayplatformid = sf.displayplatformid and sf.deletedate is null
where frv.venueid = 1 and frv.businessid = 1 and sl.leasetype = 1 and sl.leaseenddate > '1/1/2007'

Go to Top of Page

cjhardie
Yak Posting Veteran

58 Posts

Posted - 2007-01-16 : 15:00:37
I used the second query and it was incorrect.
The enddate column was the max one that gave no column name...What I want is to return one row that says this:

"33 2007-03-31 00:00:00.000 2006-06-30 00:00:00.000"

2006-06-30 is the max but in the query you gave me it is not????
here are the results for the second query.

Businessid LeaseEndDate Enddate
33 2007-03-31 00:00:00.000 2007-08-01 00:00:00.000
33 2007-03-31 00:00:00.000 2007-08-01 00:00:00.000
33 2007-03-31 00:00:00.000 2006-06-30 00:00:00.000
33 2007-03-31 00:00:00.000 2006-12-31 00:00:00.000
33 2007-03-31 00:00:00.000 2006-12-31 00:00:00.000
33 2007-03-31 00:00:00.000 2006-12-31 00:00:00.000
33 2007-03-31 00:00:00.000 2006-06-30 00:00:00.000
33 2007-03-31 00:00:00.000 2007-08-01 00:00:00.000
33 2007-03-31 00:00:00.000 2007-08-01 00:00:00.000
33 2007-03-31 00:00:00.000 2006-06-30 00:00:00.000
33 2007-03-31 00:00:00.000 2007-08-01 00:00:00.000
33 2007-03-31 00:00:00.000 2006-12-31 00:00:00.000
33 2007-03-31 00:00:00.000 2006-12-31 00:00:00.000
33 2007-03-31 00:00:00.000 2007-08-01 00:00:00.000
33 2007-03-31 00:00:00.000 2007-08-01 00:00:00.000
33 2007-03-31 00:00:00.000 2006-12-31 00:00:00.000
33 2007-03-31 00:00:00.000 2006-12-31 00:00:00.000
33 2007-03-31 00:00:00.000 2006-06-30 00:00:00.000
33 2007-03-31 00:00:00.000 2006-06-30 00:00:00.000
33 2007-03-31 00:00:00.000 2007-08-01 00:00:00.000
Go to Top of Page

cjhardie
Yak Posting Veteran

58 Posts

Posted - 2007-01-16 : 15:04:23
I figured out half of the problem....in the select max statement is should have where a.deletedate is null....that took care of the 2007 date that shouldnt be in there, but it still gives me about 9 results when I still only want one that has the latest enddate.
Go to Top of Page

Vinnie881
Master Smack Fu Yak Hacker

1231 Posts

Posted - 2007-01-16 : 15:10:08
That's what the first query should do. Did you try that?
Go to Top of Page

cjhardie
Yak Posting Veteran

58 Posts

Posted - 2007-01-16 : 15:14:13
that gives me back many results of different dates for one business.
Go to Top of Page

Vinnie881
Master Smack Fu Yak Hacker

1231 Posts

Posted - 2007-01-16 : 15:18:48
my bad try this


select srv.businessid, sl.leaseenddate, Max(sf.enddate)
from siteregionvenue srv
inner join franchiseregionvenue frv on srv.franchiseregionvenueid = frv.franchiseregionvenueid and frv.deletedate is null
inner join business b on frv.businessid = b.businessid
inner join sitelease sl on srv.siteregionvenueid = sl.siteregionvenueid and sl.deletedate is null
inner join displayarea da on srv.siteregionvenueid = da.siteregionvenueid
inner join displayplatform dp on da.displayareaid = dp.displayareaid
inner join slotfill sf on dp.displayplatformid = sf.displayplatformid and sf.deletedate is null
where frv.venueid = 1 and frv.businessid = 1 and sl.leasetype = 1 and sl.leaseenddate > '1/1/2007'
group by srv.businessid, sl.leaseenddate

Go to Top of Page

cjhardie
Yak Posting Veteran

58 Posts

Posted - 2007-01-16 : 15:21:17
yeah I feel like an idiot now..thanks a lot.
Go to Top of Page
   

- Advertisement -