June 12, 2018 at 4:56 am
create table #Achievements (Ach_ID INT, Description varchar (30), Bonus_Points int)
create table #PlayersAchievments (Player_ID INT, Ach_ID INT, Winning_Date DATE)
INSERT INTO #Achievements VALUES (10,'Gold Medal',90)
INSERT INTO #Achievements VALUES (21,'Shield of Honour',20)
INSERT INTO #Achievements VALUES (39,'Red plasma',75)
INSERT INTO #Achievements VALUES (40,'Ach',75)
INSERT INTO #PlayersAchievments VALUES (1,21,'06/15/2015')
INSERT INTO #PlayersAchievments VALUES (2,21,'12/24/2015')
INSERT INTO #PlayersAchievments VALUES (2,21,'11/11/2012')
INSERT INTO #PlayersAchievments VALUES (3,39,'05/01/2013')
INSERT INTO #PlayersAchievments VALUES (3,10,'03/02/2013')
INSERT INTO #PlayersAchievments VALUES (3,40,'03/02/2015')
Hi,
Lets say I have the 2 tables above.
I need to return all the ach_id and number of winnings for year 2015. If there are no winnings for an ach_id for the year 2015 I will return 0 if there are winnings then I will return the number of winnings for year 2015.
Result:
Ach_id Winnings_2005
10 0
21 2
39 0
40 1
Not sure how to go about that.
Thanks
June 12, 2018 at 5:36 am
I think the first question most will ask is, what have you tried so far to accomplish this?
Take a look at using a GROUP BY query.
June 12, 2018 at 6:16 am
Hi,
Thanks for replying.
This is what I have done. I get the results I want but it seems not the correct why of doing this.
SELECT DISTINCT isnull (P1.ACH_ID,0) ACH_ID,isnull(CNTPLAYER,0)
FROM #PlayersAchievments P1
LEFT JOIN (
SELECT Ach_ID, YEAR(WINNING_DATE)WINNING_DATE,COUNT (PLAYER_ID) CNTPLAYER
FROM #PlayersAchievments
WHERE YEAR(WINNING_DATE)=2015
GROUP BY Ach_ID,YEAR(WINNING_DATE)) P2 ON P1.Ach_ID=P2.Ach_ID
June 12, 2018 at 7:08 am
It could be simplified a bit.SELECT a.Ach_ID, Winnings_2015 = COUNT(p.Player_ID)
FROM #Achievements a
LEFT JOIN #PlayersAchievments p ON p.Ach_ID = a.Ach_ID AND YEAR(p.Winning_Date) = 2015
GROUP BY a.Ach_ID
June 12, 2018 at 7:21 am
Thank you
Viewing 5 posts - 1 through 4 (of 4 total)
You must be logged in to reply to this topic. Login to reply
This website stores cookies on your computer.
These cookies are used to improve your website experience and provide more personalized services to you, both on this website and through other media.
To find out more about the cookies we use, see our Privacy Policy