|
Posted by Eugene on 02/23/07 01:41
On Feb 22, 1:25 pm, Utahd...@hotmail.com wrote:
> On Feb 22, 3:09 pm, "Eugene" <als...@gmail.com> wrote:
>
>
>
> > Hi all,
>
> > I have the following table
>
> > Name Date Wish Valid
>
> > Name is person's name, date defaults to getdate() and is never
> > assigned directly (datetime field), Wish is some message, and Valid is
> > bit, 1 indicates if the wish is the latest, and therefore valid. All
> > previous wishes are kept in database, and are "invalidated" by setting
> > the Valid to 0.
>
> > So, a typical data set looks like:
>
> > Name Date Wish Valid
> > Joe 02/01/2007 Ice Cream 0
> > Joe 02/04/2007 Bicycle 0
> > Joe 02/06/2007 PS3 0
> > Joe 02/22/2007 XBox 360 1
> > Mary 02/02/2007 Barbie 0
> > Mary 02/04/2007 Cindy 0
> > Mary 02/06/2007 Barbie house 0
> > Mary 02/20/2007 Get married 1
>
> > My users want to see the initial wish at some point and another one
> > some time later (they provide dates). So, if someone wanted to see
> > changes in wishes between 02/03 and till 02/15, they would get that
> > Joe's initial wish was Bicycle and the latest that he wanted was PS3.
> > As for Mary, she started wanting Cindy and ended up thinking about the
> > Barbie house.
>
> > I can do UNION, but is there another way to do that?
> > Thank you.
>
> -- Put them into a temporary table:
>
> SELECT Name, Min(Date) as FirstWishDate, Max(Date) as LastWishDate
> INTO #FirstAndLast
> FROM Wishlist
> WHERE Date >= @StartingDate
> AND Date <= @EndingDate
>
> -- Then compare the values
>
> SELECT t.Name, t.FirstWishDate, w1.Wish as FirstWish, t.LastWishDate,
> w2.Wish as LastWish
> FROM #FirstAndLast t,
> WishList w1,
> WishList w2
> WHERE t.Name = w1.Name
> AND t.FirstWishDate = w1.Date
> AND t.Name = w2.Name
> AND t.FirstWishDate = w2.Date
>
> Of course, this is supposing they've only made one wish per day,
> otherwise you'll duplicate some rows. If that is the case, make sure
> you are tracking times as well.
>
> Good luck!
>
> -Utah
Utah,
Thank you for the idea! However, having the extra step of getting the
temp table is not something that I think the DBA here would approve.
The good news is that the date field is the datetime (defaulting to
getdate()) and it puts the date and time up to milliseconds, so the
chances for two people making the wish at the same time are very
minimal.
Thanks again!
Navigation:
[Reply to this message]
|